JHB의 프로그래밍 삽질기

[잡설] 특정 컨트롤이나 변수에 의존적으로 값이 바뀌는 변수에 대하여. setter의 사용. 본문

PROGRAMMING/Essay

[잡설] 특정 컨트롤이나 변수에 의존적으로 값이 바뀌는 변수에 대하여. setter의 사용.

roter 2011.02.15 17:15

특정 컨트롤이나 변수에 의존적으로 값을 갖는 변수가 있을 수 있다.

예를 들어 MFC의 slider 컨트롤에서 물체의 투명도를 제어 한다고 해보자.

그럼 투명도를 관리하는 컨트롤러 이름은
m_nSliderOpacity;
그리고 실제로 Object의 투명도가 제어 되는 부분은
pObject->SetOpacity(fValue);
라고 하면

m_nSliderOpacity의 POSITION과 pObject->setOpacity의 fValue는 매우 디펜던트하게 움직인다.
즉 하나만 바뀔 수는 없다는 것이다.

슬라이더는 내가 움직여 주는거잖아? 라고 생각 할 수도 있겠지만. 예를 들어 '탭 구성'으로 화면을 적용 하였을 때
다른 탭으로 갔다가 돌아오는 경우, 슬라이더를 기존에 사용한 값으로 변경해 주어야 하는 경우가 생긴다.

이때 m_nSliderOpacity.setPos( value ); pObject->SetOpacity(fValue)... 이런식으로 해주는건 안 좋다.
이 한경우만 그러면 몰라도, 다른 곳에서도 바꿔줘야 하는 경우가 생긴다면 전부다 이런식으로 하나 하나 다 쳐줘야 할 것이다.

이를 위해서 SetOpacity 같은 setter를 만들어서 동시에 값이 움직이도록 하는 것을 추천한다.

즉 이를 훈련 하기 위해, private등의 변수 값을 자기 자신 클래스 내에서 제어 함에 있어서도 setter/getter를 쓰는 것이 좋을 것 같다는 생각이 들었다.

그럼 의존적으로 움직이는 수 많은 변수들에 대해 덜 햇깔리게 될 테니깐.

결론 : 세터&게터를 쓰자. 세터 게터가 아닌 상태에서 멤버변수값 함부로 막 바꾸지 말자. 지역 변수는 뭐 맘대로 볶고 지지고 해도 괜춘함.
0 Comments
댓글쓰기 폼