Direct Variable Access ¶
인스턴스 변수의 값을 어떻게 얻어오고 어떻게 셋팅해주는가?
초기화처럼 변수에 접근하는 방법도 큰 이슈 중 하나였다. 이것에도 두가지 방법이 있는데, 역시 패턴의 존재 이유처럼, 하나는 유연성, 또 다른 하나는 가독성이다. 첫번째 방법은 모든 변수를 직접 접근하는 것이다. 다른 하나는, 항상 메세지를 보내는 것이다.(setter,getter를 사용한다.)
아래는 한번 보고 '음. 메세지 x를 보내는군' 하고 잠깐 생각해야 하지만,
~cpp ...getX()...아래는 '음. 그냥 x구나.' 할 수 있다는 것이다.
~cpp ..,x...
와드 아저씨의 말로는, '클래스에 아주 적은 양의 메소드만 존재한다면, getter/setter를 추가하는 것만으로도 메소드의 수가 두배가 되어버린다. 이는 전혀 사용되지 않을 유연성을 위해 쓸데없이 갯수를 늘린 것이다.' 라고 한다.
하지만 이 클래스가 상속이 될 가능성이 있다면, setter/getter를 오버라이딩 해서 사용할수 있으므로, IndirectVariableAccess를 쓰는 것이 괜찮다.
변수에 직접 접근하라.
~cpp void Point::setXnY(int xNumber, int yNumber) { x = xNumber; y = yNumber; }