Kotlin Property의 set을 막는 방법

반달·2023년 2월 11일
0

우테코 코드리뷰

목록 보기
1/3

문제 코드

// 클래스 안
private var position = 0

fun getPosition() = position

fun getName() = name

리뷰어님 : getter를 따로 만들기 보다, 프로퍼티를 외부에 공개하고 set을 못하게 막아보는 것은 어떨까요?
관련 내용은 kotlin property 문서 내용을 참고해보세요 :)


나 : Kotlin을 Kotlin 답게 사용하지 못했던 것 같습니다. Java같이 getter를 구현하고 있었군요.😵
구글링을 하면서 알아보니 두 가지의 방법이 있었습니다.

  1. private set 사용하기 (값이 그대로 반환되어도 상관없을 때 사용)
var postion : Int = 0
	private set
  1. Backcing Properties (값이 가공되어서 반환되어야 할 때 사용)
private var _results: MutableList<List<Tile>> = mutableListOf()

val results: List<List<Tile>>
    get() = _results

위의 예시코드에서 results의 경우 그냥 getter로 꺼내쓰면 리스트의 내용이 수정 될 위험이 있습니다. 따라서 수정 할 수 없게 List로 가공이 되어 반환이 되게끔해야 합니다. Backing Properties로 해결 할 수 있습니다.


느낀점

평소에 클래스를 구현한다고 하면, 대부분 변수들의 접근제어를 private로 지정하여 외부에서 접근을 못하게끔 하였는데, val이면 상관없지만 var의 경우 수정이 가능 할 수 있어서 private로 지정하여 막아둔 이유가 컸다.
물론 아직 코틀린이 미숙해서...ㅎㅎ 외부에 공개하고private set으로 막아둘 수 있다는 사실을 몰랐지만 이번에 알게 되었으니 됐다.😎

profile
깊이 있는 안드로이드 개발자가 되기 위해

0개의 댓글