NULL 리턴은 왜 나쁠까?
개발자의 고객은 누구일까요? 사용자(End-user)입니다. 하지만 또 다른 중요한 고객이 있습니다: 바로 동료 개발자입니다. 복잡하고 나쁜 코드는 사용자에게 버그를, 개발자에게는 낮은 생산성을 초래합니다. 이 글에서는 코드 복잡성 관리에 대해 이야기합니다.
null 리턴의 문제점: 많은 사람들이 null을 '백만 달러짜리 실수'라고 부름. Optional 타입이나 Null Object Pattern을 사용하면 해결될 수 있음. 하지만 여기서는 코드를 읽는 사람의 관점에서 null이 왜 복잡성을 만드는지 살펴봄.
예제 상황:
userRepository.findByName("김토스")가 null을 반환한다면, 그 이유는 무엇일까? 데이터베이스에 해당 이름이 없거나, 네트워크 연결 문제, 탈퇴한 회원 등 여러 가지 이유가 있을 수 있음.실제 이유: '김토스'는 월요일이 아닌 수요일에 입사했고, 서버의 데이터베이스는 월요일 자정에만 인사 관리 시스템과 동기화되기 때문에 아직 데이터베이스에 존재하지 않았음.
해결 방법:
로그에 맥락 남기기: 코드에 다양한 의미를 축약하지 않고 로그에 자세히 남겨서 코드를 읽는 사람이 쉽게 이해할 수 있도록 함
맥락 처리를 위한 기능 만들기: 예를 들어,
userRepository.findByName()함수 바깥에서 null 처리를 하고 싶을 때 재시도 로직을 넣을 수 있음.필요할 때만 기능 제공하기: 적절한 기본값을 주거나 필요할 때만 기능을 사용할 수 있도록 만들어 개발자의 부담을 줄임
