Null Object

자바로 알고리즘을 작성하다보면 정말 귀찮은 일 중에 하나가 널 검사(null check)이다. 일반적으로 간단한 연결 리스트(linked list)를 traverse하는 프로그램을 짠다고 해도 매번 널인지 검사하는 코드가 들어가야 한다.

Null Object는 널 검사를 줄이는 패턴이다.  예를 들어 x를 연결 리스트에서 찾는 알고리즘이라면 nullObject의 값을 x로 설정하고, 다음과 같이 루프를 돌면 특별히 널을 따로 검사할 필요가 없다.

head -> Node -> Node -> Node -> NullObject (Node)

Node n = head
nullObject.value = x

while (true) {
    if (n.value == x) return n != nullObject
    n = n.next
}

널 검사 오버헤드만 없애도 20-30%의 속도 향상이 있다고 하는데, 다른 곳에서도 응용할 수 있을 것이다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s