문서
null 리턴은 왜 나쁠까?
나재은 · 토스 · 토스 기술 블로그
소개
코드 복잡성 관리 측면에서 의미를 축약한 표현의 문제와 해결 방법을 예제로 알아봐요.
AI 핵심 요약
null은 값이 없다는 사실만 드러낼 뿐, 데이터 미동기화나 조회 실패처럼 왜 값이 없는지는 설명하지 않아 코드를 읽는 개발자가 맥락을 추측하게 만듭니다. 글은 이런 의미 축약이 코드 복잡성을 높인다고 설명하며, 원인과 해결 단서를 예외 메시지나 로그에 구체적으로 남기는 방법을 제안합니다. 호출자가 재시도해야 하는 경우에는 재시도 동작을 함수 API나 정책으로 표현하고, 필요할 때만 선택하도록 해 nullable 분기와 불필요한 인자 부담을 줄일 수 있습니다. 핵심은 특정 패턴을 고집하는 것이 아니라, 코드와 실행 결과에 필요한 맥락을 명시해 다음 개발자가 추측하지 않도록 하는 것입니다.
- null, 빈 문자열, -1처럼 여러 원인을 하나의 값으로 표현하면 호출자가 배경과 실패 원인을 추측해야 합니다.
- 주석에만 의존하기보다 예외 메시지나 로그에 원인, 관련 값, 해결 방법, 참고할 위치를 남기세요.
- 호출자가 재시도 같은 후속 동작을 해야 한다면 그 맥락을 함수의 API로 표현해 분기와 nullable 처리를 줄일 수 있습니다.
- 자주 쓰지 않는 동작은 기본값이나 선택 가능한 정책으로 제공해 일반적인 호출의 부담을 낮추세요.