• 이 클래스의 내부 구현을 리팩터링 등으로 변경했을 때 클라이언트가 영향을 받는가?
• 이 코드를 자주 변경해야 하는가? 그렇다면 인터페이스와 같은 더 안정적인 추상화 뒤에 코드를 숨기는 방식으로 디자인할 수 있는가?
• 이 정보가 클라이언트가 알아야 할 최소한의 정보인가? 알아야 할 내용이 적을수록 더 좋다.
• 불필요하게 구현 세부 사항을 노출하고 있는가? 클라이언트가 알 필요 없다면 노출하지 말라.
간단히 말해 무엇을 노출하고 무엇을 감출지 결정해야 하고, 노출하는 세부 사항을 변경하면 클라이언트에게 얼마나 영향을 미칠지 고민해야 한다.