get/set이 꼭 필요할까요?
글쓴이: cppig1995 / 작성시간: 금, 2006/11/17 - 7:08오후
클래스의 멤버 변수에 대해 접근을 하는 getter와 값을 바꾸는 setter가 있습니다.
get/set이 꼭 필요할까요?
get/set을 없애는 방법을 생각해 봤습니다.
아주 쓸데없는 해법으로는 멤버 변수를 없애는 방법(!)이 있지요. -_-;;
멤버 변수를 public인 프록시 클래스로 풀어놓는 방법이 떠올랐습니다.
그러니까 object.memberVariable = 101; 이라는 문장을 썼는데, memberVariable이 사실 100을 넘으면 안 되는 값이라면,
프록시 클래스의 operator=에서 처리를 알아서 해주겠죠.
하지만 퍼포먼스에 의심이 가기 시작합니다.
다음 방법으로는 그냥 풀어주고, 쓸 때 바꾸기(지연평가원칙에 의거)하는 방법이 있겠습니다.
예를 들어, memVar라는 멤버변수가 있고, object.memVar = 101; 했다면
memVar는 101이었다가 불러올 때만 바뀌는 거죠.
하지만 이것의 문제점은 memVar가 불려지는지 아닌지 알수없다는것.
1과 2의 방법을 조합하면 어떻게 될것같은데..
get/set은 꼭 있어야 하는 건가요? 고수님들의 의견 부탁드립니다.
기준언어: C++
Forums:
Set, Get 의 단점을
Set, Get 의 단점을 보완하는 것중에 프로퍼티라는것이 있는데, VC++.NET 2005 버전에서는 프로퍼티 비슷한 키워드가 있었던걸로 기억합니다.
혹은 http://www.codeguru.com/Cpp/Cpp/cpp_mfc/article.php/c4031/ 보시면 property를 구현하는 템플렛이 나오고 'c++ property'로 구글에게 물으면 많은 답을 던저 줄겁니다.
제 경우는 Setter, Getter가 좋습니다.
이런식으로 setter를 구성해서 setter의 권한을 주는 방법도 사용하는걸 봤지만... 맴버변수로 막 열기는 껄끄러울때 Setter를 달고, Setter를 조심히 써야합니다~ 라는 권고문으로 Setter의 단점을 피해가는게 일반적일겁니다. -_-
poklog at http://poksion.cafe24.com/poklog/
poklog at http://poksion.cafe24.com/poklog/
잠시 고민해 봅니다.
>get/set을 없애는 방법을 생각해 봤습니다.
곰곰히 생각해 보니 set/get이 왜 있어야 하는지에 대한 의문과 왜 없애고자 하는지에 대한 의문이 동시에 드는군요.
그냥 떠오르는 생각으로는
클래스의 속성들에 대한 적절히(값의 범위, 다른 속성으로 전파등) 설정을 할 수 있다는 것이 장점이 아닐까 생각합니다.
그냥 프러퍼티의 개념으로 본다면, 없애는 것도 무방하긴 할 것 같은데, 습관적으로 사용해 온것이라
다른 부분들(이해와 디버깅등 기타등등)이 문제가 되지 않을까 걱정이 앞설 뿐입니다.
근데, 왜 없애고자 하는 건가요?
댓글 달기