문제는 거꾸로입니다.
비공개 기능을 수행 할 이유를 찾지 않습니다. (제 생각에) 시작하는 것은 잘못된 생각입니다. 추론은 다른 방향으로 가야합니다.
다시 말해서 "왜 내가 비공개로 만들어야합니까?"라고 묻지 마십시오. "왜 그것을 공개해야합니까?"
의심스러운 경우 노출시키지 마십시오. 그것은 Ockham의 면도기와 같습니다-필요 이상으로 질식을 번복하지 마십시오.
편집 : @Telastyn이 제기 한 반론에 대한 의견을 제시합니다 (확장 토론을 피하기 위해).
나는 시간이 지남에 따라 꽤 오랫동안 그것을 간첩했지만 내 경험상 사물은 너무 사적인 경향이 있습니다.
예, 클래스가 상속을 위해 열려 있으면 때로는 고통 스럽지만 일부 개인 메서드 (이 동작을 변경하려는)를 재정의 할 수는 없습니다.
그러나 protected
충분 - 그리고 여전히 비공개입니다.
그것은 "공개해서는 안되는 것들"에 도달하기 위해 많은 코드 복제 및 오버 헤드를 가져 오지만 어쨌든 간접적으로 액세스됩니다.
문제가된다면 공개하기 만하면됩니다! 내가 이야기 할 필요성이 있습니다 :)
내 요점은 당신이 경우에 (YAGNI와 모두) 그것을해서는 안된다는 것 입니다.
개인 기능을 공개로 가져 오는 것보다 개인 기능을 공개하는 것이 항상 쉽습니다. 후자는 기존 코드를 손상시킬 수 있습니다.