오늘 정리해 보고자 하는 건 누구나 다 아는 패턴 중 하나일 Null Object Pattern 에 대해서 한번 생각해 보려고 한다. 일단은 글작성 동기는 어떻게? 퇴사를 얼마 안남기고 막내 프로그래머(경력상 막내지만 착실한 친구)에게 Optional 을 설명해 주고 있었는데, 뭔가 부족한 설명을 한 것 같은 느낌이라 좀 더 어딘가에 정리를 해 놓고 싶었습니다. Optional 을 설명하다 보면 참 많이 돌아가게 되더구요. 전혀 생각도 못했습니다. 시스템 내에서 NullPointerException 이 어떤 의미로 다가왔었는가 Null Check 로직이 많아지면 얼마나 코드를 읽기 어렵게 만들어 주는가 이런 체크 로직이 많은 상황에서 새로운 다향성 객체가 만들어질 때 얼마나 많은 수정이 일어난는가 등등 그런 이유로 Optional 이 생겨나긴 했는데 일단 그 장점과 위험성은 정리해 놓은 분들이 많으니 블로그를 검색해봐라로 마무리 되었습니다. 그런데 말이죠 예전에도 Null Object Pattern 은 빈번하진 않아도 꽤 사용이 되었던 패턴입니다. 그 정의는 매우 단순합니다. 우선 ChatGPT 가 알려주는 Null Object Pattern 은 이렇습니다. "Null Object Pattern is a design pattern in object-oriented programming that allows the use of a special null object to represent the absence of an object. Instead of returning a null reference from a method or property, the null object pattern provides a substitute object that behaves in a predictable and consistent way with the rest of the system. This can help to reduce the amount of nu...