이해하기 전에 알아야 하는 핸들이란?
다른 객체에 손을 댈 수 있게 하는 매개자를 지칭하며, 참조자등의 성격을 띄우고 있다.(외부 참조)
그렇다면 왜 '핸들'을 반환하는 코드를 피하는것일까?
쉽게 말해서 클래스 내부 멤버 변수는 private 으로 해야 한다고 배웠을 것이다. 그런데 멤버 변수에 대한 포인터나 레퍼런스를 반환하게 된다면, 그것이 const 로 한다해도, 외부에서 아주 손쉽게 변환을 가할수 있는 상태가 된다.
이 상태는 바로 캡슐화가 깨진 상태가 된다. 캡슐화가 왜 중요한지는 다들 알것이므로 생략한다.
저자 역시, 핸들을 반환해야 하는 어쩔수 없는 경우에만 핸들을 반환한다고 말한다.
어찌 되었던, 클래스 private에 넣는것을 간과하여, 코딩을 하면 안된다는 것을 알려 준다.
이것만은 잊지 말자!
1. 어떤 객체의 내부 요소에 대한 핸들을 반환하는 것을 피하도록 하자
관련링크
http://synch3d.com/wiki/moin/moin.cgi/EffectiveC_2b_2b#line159
http://ikpil.tistory.com/324
http://ikpil.tistory.com/323
다른 객체에 손을 댈 수 있게 하는 매개자를 지칭하며, 참조자등의 성격을 띄우고 있다.(외부 참조)
그렇다면 왜 '핸들'을 반환하는 코드를 피하는것일까?
쉽게 말해서 클래스 내부 멤버 변수는 private 으로 해야 한다고 배웠을 것이다. 그런데 멤버 변수에 대한 포인터나 레퍼런스를 반환하게 된다면, 그것이 const 로 한다해도, 외부에서 아주 손쉽게 변환을 가할수 있는 상태가 된다.
이 상태는 바로 캡슐화가 깨진 상태가 된다. 캡슐화가 왜 중요한지는 다들 알것이므로 생략한다.
저자 역시, 핸들을 반환해야 하는 어쩔수 없는 경우에만 핸들을 반환한다고 말한다.
어찌 되었던, 클래스 private에 넣는것을 간과하여, 코딩을 하면 안된다는 것을 알려 준다.
이것만은 잊지 말자!
1. 어떤 객체의 내부 요소에 대한 핸들을 반환하는 것을 피하도록 하자
관련링크
http://synch3d.com/wiki/moin/moin.cgi/EffectiveC_2b_2b#line159
http://ikpil.tistory.com/324
http://ikpil.tistory.com/323
'책 정리 > Effective C++ 3판' 카테고리의 다른 글
항목 33: 상속된 이름을 숨기는 일은 피하자 (4) | 2008.07.02 |
---|---|
항목 32: public 상속 모형은 반드시 "is-a(...는 ...의 일종이다)"를 따르도록 만들자. (0) | 2008.07.02 |
항목 31: 파일 사이의 컴파일 의존성을 최대로 줄이자 (0) | 2008.07.02 |
항목 30: 인라인 함수는 미주알고주알 따져서 이해해 두자 (0) | 2008.07.01 |
항목 29: 예외 안전성이 확보되는 그날 위해 싸우고 또 싸우자! (0) | 2008.07.01 |
항목 27: 캐스팅은 절약, 또 절약! 잊지 말자. (0) | 2008.06.26 |
항목 26: 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자. (0) | 2008.06.25 |
항목 25: 예외를 던지지 않는 swap에 대한 지원도 생각해 보자 (0) | 2008.06.24 |
항목 24: 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멘버 함수를 선언하자 (0) | 2008.06.15 |
항목 23: 멤버 함수보다는 비멤버 비프렌드 함수와 더 가까워지자. (0) | 2008.06.07 |
최근댓글