클린 소프트웨어 - 널 오브젝트 패턴
널 오브젝트 패턴
널 오브젝트 패턴을 사용하면 null
검사의 필요를 제거하고, 코드를 단순화할 수 있다.
protocol Employee { ... } |
let employee: Employee = DB.getEmployee("Bob") |
위의 코드에서, DB.getEmployee(_:)
메소드는 주어진 인자에 맞는 데이터가 있을 때는 EmployeeImplementation
객체를, 그렇지 않을 때는 NullEmployee
객체를 반환한다. NullEmployee
의 구현은 ‘아무 일’도 하지 않게 한다. ‘아무 일’이라는 것은 메소드의 구현에 달려 있다. 이러한 구조로 null
생성을 대체할 수 있다.
null
체크를 하는 대신, 언제나 올바른 동작을 하도록 보장할 수 있다.
Swift는 옵셔널을 지원하여 null 체크를 쉽게 할 수 있다.
결론
C 기반 언어를 사용해온 사람에게, 어떤 종류의 실패에 대해 null
이나 0
을 반환하는 함수에 익숙하므로 이러한 것들을 체크하여 실패 여부를 확인하는 것에 익숙하다.
널 오브젝트 패턴을 사용하면 함수가 실패한 경우에 null
이나 0
을 반환하거나, 에러를 던지는 대신, 항상 유효한 객체를 반환하는 것을 보장할 수 있다. 실패를 나타내는 객체는 ‘아무 일도’ 하지 않는다.