[Java] null exception 위험성을 줄이는 방안 - 삼항연산자

Hyo Kyun Lee·2024년 11월 7일
0

Java

목록 보기
60/66

1. 개요

리팩토링을 진행하면서 발생한 Null Exception 오류를 보면서 다음과 같은 생각을 해보았다.

  • 예상치 못한 null exception의 위험성을 최소화할 수 있는 안전장치가 있을까
  • 가독성, 로직의 길이를 최소화할 수 있는 방안이 있을까

그리고, 자바스크립트의 삼항연산자 로직을 보면서 자바에서도 이를 적용하여, null exception을 효과적으로 처리할 수 있는 방안을 알게되었다.

2. 삼항연산자를 이용한 null exception 처리

삼항연산자는 expr ? A : B, expr(표현 혹은 조건식)이 참이면 A, 거짓이면 B를 반환한다.

String value = "HELLO";

라는 문자열이 있다고 하자.

String value2 = "";

value2 = value ? value : "HI";

이 value2 변수를 초기화하기 위한 삼항연산자에서,

  • value라는 변수는 HELLO라는 문자열로, 존재하는 변수이고 null이 아니므로 value2에 value 변수가 할당된다.
  • 만약 value라는 변수를 초기화하지 않았거나(null), false boolean값을 할당해주었다면, HI라는 문자열이 value2에 할당된다.

여기서 중요한 점은

  • false와 더불어 null일 경우에도 삼항연산자는 적용되며, false와 동일한 과정으로 논리연산을 하여 값을 반환한다.
  • 삼항연산자를 이용하면, 조건(문자열이 있음)과 문자열 그자체(반환값)을 모두 이용할 수 있다.

따라서, 이러한 방법을 이용하여 instance가 초기화되어있지 않은 상태에서 초기값을 설정하거나, 초기값을 설정하지 않은 상태를 if/isEmpty()/NULL과 같은 복잡하고 가독성 떨어지는 조건문을 이용하지 않고도 파악할 수 있으며, 동시에 변수까지 할당할 수 있다.

이와 비슷한 원리로, NULL과 undefined를 판단하여 연산하는 ??(NULL병합 연산자)도 있다.

두가지를 매우 유용하게 사용할 수 있을 것으로 보이므로 반드시 기억해서 사용하도록 하자.

3. 참고자료

NULL 병합 연산자 / 삼항 연산자 - https://d-dual.tistory.com/32

0개의 댓글