Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

DirectVariableAccess

From ZeroWiki

Direct Variable Access

인스턴스 변수의 값을 어떻게 얻어오고 어떻게 셋팅해주는가?


초기화처럼 변수에 접근하는 방법도 큰 이슈 중 하나였다. 이것에도 두가지 방법이 있는데, 역시 패턴의 존재 이유처럼, 하나는 유연성, 또 다른 하나는 가독성이다. 첫번째 방법은 모든 변수를 직접 접근하는 것이다. 다른 하나는, 항상 메세지를 보내는 것이다.(setter,getter를 사용한다.)


스몰토크 진영에서는 IndirectVariableAccess를 선호했다. 그러다가 켄트아저씨가 DirectVariableAccess를 써 보고는 그것의 가독성에 놀랐다.


아래는 한번 보고 '음. 메세지 x를 보내는군' 하고 잠깐 생각해야 하지만,

...getX()...

아래는 '음. 그냥 x구나.' 할 수 있다는 것이다.

..,x...

와드 아저씨의 말로는, '클래스에 아주 적은 양의 메소드만 존재한다면, getter/setter를 추가하는 것만으로도 메소드의 수가 두배가 되어버린다. 이는 전혀 사용되지 않을 유연성을 위해 쓸데없이 갯수를 늘린 것이다.' 라고 한다.


하지만 이 클래스가 상속이 될 가능성이 있다면, setter/getter를 오버라이딩 해서 사용할수 있으므로, IndirectVariableAccess를 쓰는 것이 괜찮다.


변수에 직접 접근하라.


void Point::setXnY(int xNumber, int yNumber)
{
	x = xNumber;
	y = yNumber;
}

SBPPSummary