TIL

아이템 27 변화로부터 코드를 보호하려면 추상화를 사용하라

상수

fun isPasswordValid(text: String): Boolean {
	if (text.length < 7) return false
	// ...
}
const val MIN_PASSWORD_LENGTH = 7

fun isPasswordValid(text: String): Boolean {
	if (text.length < MIN_PASSWORD_LENGTH) return false
	// ...
}

함수

// 화면에 토스트 메시지를 출력하는 확장 함수
fun Context.toast(message: String, duration: Int = Toast.LENGTH_LONG) {
	Toast.makeText(this, message, duration).show()
}
fun Context.showMessage( // 메시지를 출력한다는 추상적인 이름
	message: String, 
	duration: MessageLength = MessageLength.LONG),
) {
	// ...
}

클래스

인터페이스

보편 객체를 특수 객체로 래핑

data class Id(private val id): Int

추상화의 문제

균형 맞추기