[Effective Java] Item 15. 클래스와 멤버의 접근 권한을 최소화하라
1. 캡슐화 컴포넌트는 모든 내부 구현을 숨김으로써 구현과 API를 분리한다. 오직 API를 통해 다른 컴포넌트와 소통할 뿐, 서로의 내부 동작 방식은 신경쓰지 않는다. 컴포넌트들을 독립시키는 캡슐화의 장점은 다음과 같다. 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 빨리 파악하여 디버깅이 쉽고, 컴포넌트 교체 부담이 적다. 성능 최적화에 기여한다. 다른 컴포넌트에 영향을 주지 않고 특정 컴포넌트를 최적화할 수 있다. 소프트웨어 재사용성을 높인다. 독자적으로 동작하는 컴포넌트는 낯선 환경에서도 유용하게 쓰일 가능성이 높다. 큰 시스템을 제작하는 난이도를 낮춘다. 시스템 전체가 완성되지 않아도 개별 컴포넌트의 동작을 테스트할 수 있다. 2..