
아키텍처
코드 품질 개선 기법 16편: 불이 'null'인 굴뚝에 연기가 'null'이 아닐 수 없다
두줄요약
널 객체 패턴은 호출부를 단순하게 만들 수 있지만, 오류 값과 정상 값을 구분해야 할 때는 부적합했습니다. 타입으로 구분 가능한 경우에는 Optional이나 null 같은 정적 표현을 우선 고려해야 했습니다.
핵심 내용
- 널 객체 패턴은 null 같은 값을 대체해 호출부를 단순하게 만들 수 있는 설계 기법
- 경계 조건과 일반 로직을 함께 다뤄도 되는 경우에는 유용하지만, 오류 값과 정상 값을 명확히 구분해야 하면 부적합
- 타입으로 구분 가능한 경우에는 Optional, Maybe, Kotlin null, Swift nil 같은 정적 검증 방식이 더 바람직
- 동일성과 동등성 차이로 인해 널 객체 판별이 예상치 못한 버그를 만들 수 있음
적용해볼 점
- 오류 값을 구분해야 하는지 먼저 판단하고 널 객체 패턴 사용 여부 결정
- 판별 누락이 버그로 이어질 수 있는 구조라면 타입 기반 표현 검토
- List의 null과 빈 목록처럼 오류 후보가 여러 개면 표현 방식 재검토