본문 바로가기
Kotlin

Backing Property

by oncerun 2023. 7. 3.
반응형

코틀린에서 백킹 프로퍼티는 프로퍼티의 값을 저장하고 가져오기 위해서 내부적으로 사용하는 보조 프로퍼티입니다.

 

기본적으로 private 한 접근범위를 가지며, 기본값은 동일한 이름의 프로퍼티의 값을 저장하기 위한 필드입니다.

 

 

간단한 테스트코드를 작성하는 도중 객체의 값을 확인해야 하는 경우가 생겼습니다.

 

 if (calculator.number != 8) {
            throw IllegalStateException()
}

 

위 코드는 내부 프로퍼티가 외부로 노출되어 에러 발생 여부를 포함하는 구조입니다.

 

이를 대체하기 위해 data class를 검토해 볼 수 있지만 setter를 포함하고 싶지 않다면 백킹 프로퍼티를 고려해 볼 수 있습니다.

 

class Calculator(
    private var _number: Int
) {
    val number: Int
        get() = this._number
   ...
}

 

기존의 변수를 "_" prefix를 추가하고 내부적으로 읽기 전용인 val number라는 멤버를 추가합니다.

이후 커스텀 getter를 통해 내부 변수를 반환할 수 있도록 합니다.

 

이는 setter가 정의되지 않았으므로 외부에서 값을 변경할 수 없습니다.

 

추가적으로 백킹 프로퍼티와 커스텀 getter를 정의했다면 기존 소스 코드의 수정은 없고 class.member와 같이 접근하면 내부적으로 커스텀 getter를 사용하게 됩니다.

 

 

하지만 이를 위한 리팩토링을 적용하기 위해선 기존 코드를 수정하고 추가적인 코드를 작성해야 합니다.

 

그래서 setter를 사용하지 않도록 팀 내 규칙을 정하여 코드를 간결하게 할 수 있지만

 

제 생각은 기본적으로 코드는 강력한 규칙이 적용되는 것이 더 좋아보입니다.

 

 

 

반응형

'Kotlin' 카테고리의 다른 글

spring boot, gradle 설정에 kotlin 환경 설정하기.  (0) 2023.07.04
JUnit5 @JvmStatic  (0) 2023.07.04
Kotlin 테스트 작성을 위한 빌드 업  (0) 2023.01.18
Tip  (0) 2023.01.15
함수  (0) 2023.01.15

댓글