Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Refactoring] 가시성(Visibility) Computer & Program

가시성(Visibility)

접근 수정자 protected와 package-private의 차이점을 얼마전까지 난 몰랐다.
이 둘의 차이점은 protected는 package-private보다 상속받는 놈에게 더 가시성(Visibility)이 크다는 점이다. 일단 의식하고든 무의식 중이든 package-private를 써야할 곳에 protected를 쓰는 것처럼(이것 이외에 가시성이 커지는 경우는 매우 많다.) 필요 이상으로 가시성을 열어(?)준다면 클라이언트 개발자들은 그것을 공개된 API로 생각할 것이다. API로 일단 한번 공개가 된 것을 차기 버전에서 아무런 예고 없이 (예고가 되었어도 문제가 크다.) 수정된다면 클라이언트 개발자로 부터 원망을 들을 것이다.
(여기서 클라이언트는 sever/client가 아니다. 어떤 클래스가 있고 그 클래스를 사용하는 프로그램이다. 예를 들면 클래스에 Sun에서 제공하는 Vector를 사용한다면 이것도 클라이언트 프로그램이 될 수 있고, 이 프로그램 API를 사용하는 다른 프로그램도 클라이언트 프로그램이 될 수 있는 것이다.)

이는 또한 패키지간 상호 종속성(interdependency)이 커지는 또 하나의 원인이 된다. 종속성이 많으면 시스템의 결합성이 높아져, 약간의 변경이 예상할 수 없는 많은 문제를 유발하게 된다. 이는 [Java] 의존성을 줄여라...에 약간의 예가 될 만한 것을 포스팅해 놓았다.
(정확한 예를 들어 놓은 것은 아니고 이런 상황이 일어날 수 있다는 정도로...=_=;;;)



이 포스트도 중요한 점은
"정보는 최대한 은폐하고 가시성은 최대한 줄여라~"
라는 것이다...ㅋㅋ

덧글

댓글 입력 영역

Google AdSense (text/image)