안드로이드 개발자 노트
[이펙티브 코틀린] Item32. 추상화 규약을 지켜라 본문
반응형
규약을 한쪽에서 위반할 수도 있습니다.
규약은 보증과 같으며, 규약을 위반하면 코드가 작동을 멈췄을 때 문제가 됩니다.
상속된 규약
클래스를 상속하거나, 다른 라이브러리의 인터페이스를 구현할 때는 규약을 반드시 지켜야 합니다.
규약을 지키지 않는다면, 객체가 제대로 동작하지 않을 수도 있습니다.
예를 들어 hashCode가 제대로 구현되지 않으면, HashSet과 함께 사용할 때 제대로 동작하지 않습니다.
다음 코드를 살펴보면, 원래 세트는 중복을 허용하지 않는데, equals가 제대로 구현되지 않았으므로 중복을 허용해 버립니다.
class Id(val id: Int) {
override fun equals(other: Any?) =
other is Id && other.id == id
}
val set = mutableSetOf(Id(1))
set.add(Id(1))
set.add(Id(1))
print(set.size) // 3
정리
- 프로그램을 안정적으로 유지하고 싶다면, 규약을 잘 지키자
- 규약을 깰 수 밖에 없다면, 이를 잘 문서화하자
반응형
'Kotlin > 이펙티브 코틀린' 카테고리의 다른 글
[이펙티브 코틀린] Item33. 생성자 대신 팩토리 함수를 사용하라 (0) | 2023.12.17 |
---|---|
[이펙티브 코틀린] Item31. 문서로 규약을 정의하라 (0) | 2023.11.26 |
[이펙티브 코틀린] Item30. 요소의 가시성을 최소화하라 (0) | 2023.11.26 |