단일 접근 원칙(Uniform Access Principle)을 통한 캡슐화 - (上)
Source
Evernote/Advanced View Required/단일 접근 원칙(Uniform Access Principle)을 통한 캡슐화 - (上).md
Summary
본문은 객체 지향 설계에서 속성(property)과 메서드(method)의 접근 방식이 캡슐화와 유지보수에 미치는 영향을 분석한다. 초기에는 계좌 잔액(balance)을 public 속성으로 직접 접근하는 방식이 간단해 보이지만, 요구사항 변경(예: 거래 이력 추가) 시 불변식(invariant) 유지가 어려워지고, 저장된 값(stored value)에서 계산된 값(computed value)으로 구현을 변경할 때 클라이언트 코드의 수정 범위가 넓어지는 문제를 지적한다. 이를 해결하기 위해 속성을 private으로 감추고 메서드를 통해 접근하는 캡슐화가 필요함을 설명하며, 단일 접근 원칙의 필요성을 서술한다.
Key Points
- public 속성 직접 접근은 구현 변경 시 클라이언트 코드의 수정을 유발하여 유지보수성을 해친다.
- 요구사항 변경(예: 부가 로직 추가) 시 속성 접근을 메서드 호출로 전환해야 불변식을 보장할 수 있다.
- 저장된 값(stored value)과 계산된 값(computed value) 간의 구현 변경 시, 인터페이스가 동일해야 클라이언트 영향도를 최소화할 수 있다.
- 캡슐화는 정보 은닉을 통해 모듈 내부의 설계 결정과 변경 사항을 외부로부터 격리하는 핵심 기법이다.