23. 멤버함수보다는 비멤버 비프랜드 함수와 더 가까워지자
Posted 2012. 10. 19. 13:39분명 객체 지향 법칙은 할 수 있는 만큼 데이터를 캡슐화 하라고 주장하고 있다.
어떤 것을 캡슐화 하면 우선 외부에서 이것을 볼 수 없게 된다.
캡슐화하는 것이 늘어나면 그만큼 밖에서 볼 수 있는 것들이 줄어든다.
밖에서 볼 수 있는 것들이 줄어들면 그것들을 바꿀때 유연성이 커진다.
변경 자체가 영향을 줄 수 있는 범위가 변경된 것을 볼 수 있는 것들로 한정되기 때문이다.
이미 있는 코드를 바꾸더라도 제한된 사용자들밖에 영향을 주지 않는 융통성을 확보 할 수 있는데
이런 것들 때문에 캡슐화에 가치를 두는 것이다.
그 클래스의 private 멤버에 접근 할 수 있는 멤버함수(+프랜드 함수)의 개수가 늘어날수록
캡슐화 정도가 낮아진다고 볼 수 있는 것이다. 비멤버 비프렌드 함수는 private 멤버에
접근 할 수 없기 때문에 그 클래스의 캡슐화 수준은 유지하면서 인터페이스의 유연성을
높일 수 있는 것이다.
비멤버 함수를 쓴다고 해서 꼭 전역 함수를 쓸 필요는 없다. 다른 유틸리티 클래스 같은 곳의
정적 멤버 함수로 만드는 것도 괜찬다. 더 나은 C++ 스타일의 방식은 비멤버 함수로 두되
네임스페이스 안에 두는 것이다.
※ 멤버 함수보다는 비멤버 비프렌드 함수를 자주 쓰도록 합시다. 캡슐화 정보가 높아지고
패키징 유연성도 커지며 기능적인 확장성도 늘어납니다.
'BOOK > Effective C++ 3판' 카테고리의 다른 글
30. 인라인 함수는 미주알고주알 따져서 이해해 두자 (0) | 2012.10.19 |
---|---|
27. 캐스팅은 절약 또 절약, 잊지 말자 (0) | 2012.10.19 |
22. 데이터 멤버가 선언 될 곳은 private 영역임을 명심하자. (0) | 2012.10.19 |
21. 함수에서 객체를 반환해야 할 경우 참조자를 반환하려 하지 말자. (0) | 2012.10.19 |
20. 값에 의한 전달보다 상수객체 참조자에 의한 전달 방식을 택하는 편이 낫다 (0) | 2012.10.19 |
- Filed under : BOOK/Effective C++ 3판