클래스와 멤버의 접근 권한을 최소화하라 어설프게 설계도니 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐다. 잘 설계된 컴포넌트는 모두 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리한다. 오직 API를 통해서 다른 컴포넌트와 소통하고 서로의 내부 방식은 전혀 개의치 않는다. 소위 캡슐화라고 부르는 이 개념은 소프트웨어 설계의 근간이 되는 원다. 캡슐화의 장점 중 대부분은 시스템 컴포넌트를 독립적으로 만들어서 개발, 테스트, 최적화, 적용, 분석, 수정을 개별적으로 할 수 있게 하는 것과 연관이 있다. 컴포넌트를 병렬로 개발하는 것이 가능하므로 개발 속도 향상 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 컴포넌..