728x90
반응형
자바에서 문자 비교 시에 사용하는 equals함수로 변수와 상수를 비교한다면 변수, 상수값 중 어느 값이 먼저 비교대상이 되어야 하는가?

 

이 부분은 개발자 사이에서도 의견이 갈리는데, 주요 논점이 되는 부분은 변수값이 null인 상태에서 상수와 변수를 비교하는 로직이 if문 같은 조건문의 조건으로 사용될 때 일 것이다.

 

개인적으로는 상황과 목적에 맞게 의식적으로 쓰는 것이 중요하지, 정답은 없다고 생각한다.

아래 각각의 비교 순서에 따른 특징을 인지하여 적절히 사용하자.

 

◆ "상수".equals(변수)  순의 비교인 경우


장점 null을 숨겨 실무적으로 오류를 발생시키지 않는 방어적인 로직을 짤수 있다. 

 

if문안에서 문자비교 시 상수가 먼저 비교대상이 되면 변숫값이 null이더라도 NullPointerException이 발생하지 않는다.

아래 로직을 보면 8번째 라인에서 상수와 값이 null인 변수를 비교해도 예외가 발생하지 않고 값이 일치하지 않기 때문에  단순히 else문으로 빠져서 동작하는 것을 볼 수 있다.

 

상수-변수 순으로 작성하는 개발자는 예외가 발생하지 않는 이러한 장점 때문에 선호하는 경향이 있다.

에러로 인해 시스템이 죽는 상황등을 방지할 수 있기 때문이다.

상수-변수 비교

 

 

◆ 변수.equals( "상수" ) 순의 비교인 경우


장점 발생되는 예외를 캐치하여 제어할수 있다.

 

위의 예시와 반대로, 예외가 있으면 발생해야 하는데  예외가 발생하지 않기 때문에 선호하지 않는 개발자들도 있다.

null이 숨겨진 상태에서 에러가 발생하지 않기 때문에 개발이나 디버그시 놓칠 수 있고,

경우에 따라선 값이 null인 경우 특정 처리를 해야 하는 상황이면 변수-상수 순으로 비교하여 예외를 발생시키는 것이  중요할 수 도 있기 때문이다.

변수-상수 비교

 

 

 

 


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --

 

728x90
반응형