안드로이드 개발자 노트
[이펙티브 코틀린] Item30. 요소의 가시성을 최소화하라 본문
반응형
작은 인터페이스는 배우기 쉽고 유지하기도 쉬우며, 기능이 많은 클래스보다 적은 클래스가 유지보수가 쉽습니다.
어떤 수정을 하기 위해서는 클래스 전체를 이해해야 하는데, 요소 자체가 적다면 유지보수하고 테스트할 것이 적기 때문입니다.
변경을 가할 때는 기존의 것을 숨기는 것보다 새로운 것을 노출하는 것이 쉽습니다.
일반적으로 공개적으로 노출되어 있는 요소들은 이미 외부에서 사용되고 있을 것이며, 이런 요소들을 변경하면(특히나 가시성을 변경하면) 이 코드를 사용하는 모든 부분이 영향을 받기 때문입니다.
따라서 처음에는 작은 API로서 개발을 하도록 강제하는 것이 더 좋을 수 있으며, 접근 제어자를 잘 활용해서 외부에서의 임의 수정을 최소화 할 수 있습니다.
// 외부에서 set 접근 가능한 경우
var elementsAdded: Int = 0
// 외부에서 set 접근하지 못하도록 만든 경우
var elementsAdded: Int = 0
private set
이처럼 구체 접근자의 가시성을 제한해서 모든 프로퍼티를 캡슐화하는 것이 좋습니다.
가시성이 제한될수록 클래스의 변경을 쉽게 추적할 수 있으며, 프로퍼티의 상태를 더 쉽게 이해할 수 있습니다.
이는 동시성을 처리할때 중요하며, 상태 변경은 병렬 프로그래밍에서 문제가 되므로 많은 것을 제한할 수록 병렬 프로그래밍을 할 때 안전해집니다.
정리
- 인터페이스가 작을수록 이를 공부하고 유지하기 쉽다.
- 최대한 제헌이 되어 있어야 변경이 쉽다.
- 클래스의 상태를 나타내는 프로퍼티가 노출되어 있다면, 클래스가 자신의 상태를 책임질 수 없다.
- 가시성이 제한되면 API의 변경을 쉽게 추적할 수 있다.
반응형
'Kotlin > 이펙티브 코틀린' 카테고리의 다른 글
[이펙티브 코틀린] Item31. 문서로 규약을 정의하라 (0) | 2023.11.26 |
---|---|
[이펙티브 코틀린] Item29. 외부 API를 랩(wrap)해서 사용하라 (0) | 2023.11.26 |
[이펙티브 코틀린] Item28. API 안정성을 확인하라 (0) | 2023.11.26 |