[NullPE] NullPointerException 때문에 고민 1
레퍼런스를 사용하는 쪽에서 null 체크를 하면 되지만.. 그러지 못하는 경우가 있어서..
MVEL.eval(column.getPath(), entity, Integer.class)
column의 getPath()에는 item의 속성을 타고 타고 들어가는 경로도 들어옵니다. 그럴 때 타고 가는 중간에 null을 만나면 에러가 나죠. 제어할 수가 있다면 null 체크 하는 구문만 넣어서 버그를 수정하겠지만.. 지금은.. 좀.. @_@;;
그래서 Null Object Pattern이라는게 생각났고 이걸 적용해볼까 했습니다.
http://www.refactoring.com/catalog/introduceNullObject.html
http://en.wikipedia.org/wiki/Null_Object_pattern
Item 클래스의 레퍼런스 타입 변수를 반환하는 게터들이 다음과 같이 바꼈습니다.
public Code getDelivery() {
return NullObjectUtil.eval(delivery);
}
public Code getCar() {
return NullObjectUtil.eval(car);
}
public Code getItemGroup() {
return NullObjectUtil.eval(itemGroup);
}
public Supp getSupp() {
return NullObjectUtil.eval(supp);
}
public class NullObjectUtil {
public static Code eval(Code code) {
return code != null ? code : new NullCode();
}
public static Supp eval(Supp supp) {
return supp != null ? supp : new NullSupp();
}
}
그리고 domain.nullobject 패키지를 만들고
public class NullCode extends Code {
}
public class NullSupp extends Supp {
}
이렇게 NullObject 클래스들을 만들어 줬습니다.
이렇게 할지;;;
public Code getProcess(){
return Code.basicIfNull(process);
}
이런식으로 할지. 고민입니다. 어떤게 왜 나은걸까나;; @_@