이것저것 개발기록

NullPointerException(NPE)을 방지하는 안전한 코딩 습관 본문

IT 이야기

NullPointerException(NPE)을 방지하는 안전한 코딩 습관

Garam Kim 2025. 12. 29. 12:00

"백엔드 개발자의 최대 숙적, 널 포인트 예외!"
런타임에 갑자기 터지는 NPE를 막기 위해 우리는 어떤 노력을 해야 할까요? 코드를 더 견고하게 만드는 습관들을 소개합니다.

1. 왜 NPE가 무서운가?

NPE는 컴파일 시점이 아닌 실행 시점(Runtime)에 발생합니다. 즉, 개발 환경에서는 멀쩡하다가 운영 서버에서 사용자가 서비스를 이용할 때 갑자기 에러가 터진다는 뜻입니다.

2. NPE를 피하는 3가지 필살기

  • 🔒 Optional 활용하기: 값이 "없을 수도 있음"을 객체로 감싸서 명시합니다.
  • 🔒 문자열 비교 시 리터럴을 앞에: if("ADMIN".equals(role)) 처럼 사용하면 role이 null이어도 안전합니다.
  • 🔒 기본값 반환: null 대신 빈 리스트(Collections.emptyList())나 빈 문자열을 반환하세요.

💡 실무 노트

Optional을 배우면 모든 곳에 Optional을 쓰고 싶어집니다. 하지만 메소드 파라미터로 Optional을 넘기거나 필드 값으로 사용하는 건 오히려 비용이 크고 가독성을 해칠 수 있어요.

팁: Optional은 주로 반환 타입으로만 사용하고, 내부 로직에서는 명확한 null 체크나 어노테이션(@NonNull 등)을 활용하는 것이 더 세련된 방식입니다.