E D R , A S I H C RSS

Direct Variable Access

Direct Variable Access

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

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

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

아래는 한번 보고 '음. 메세지 x를 보내는군' 하고 잠깐 생각해야 하지만,
~cpp 
...getX()...
아래는 '음. 그냥 x구나.' 할 수 있다는 것이다.
~cpp 
..,x...

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

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

변수에 직접 접근하라.

~cpp 
void Point::setXnY(int xNumber, int yNumber)
{
	x = xNumber;
	y = yNumber;
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:08
Processing time 0.0233 sec