개발자들끼리 반영 전에 Pull Request나 Merge Request를 통해 동료검토를 진행하고 있다.
예전에도 물론 절차가 있긴 했는데 정말 이슈가 되는 충돌 사항이 있는지랑 신규 로직에 대해 검수하는 정도였는데
요즘은 마이너한 내용까지도 같이 확인하기 시작하면서 습관적으로 사용하는 구문에 대해 고치고 놓치기 쉬운 내용도 크로스 체크를 하게 되니 두 번 반영하는 일이 줄었다.
여튼 오늘 말하고 싶은 내용은 너무나도 자주 사용하는 eqauls 함수에 대한 내용이다.
A.equals(B)
A와 B의 값이 동일한지를 비교하는 구문으로, 비교하기를 원하는 두 대상을 순차적으로 기술하고 그 결과는 true 혹은 false로 반환된다.
이 값을 이용해서 조건문에 사용하거나 그 외의 절차를 수행하는데 사용법도 너무나도 간단하고 명료해서 사용하는데 고민해본적이 없다.
이번에 PR 생성하고 확인 받은 내용 중에 하나가
equals 함수를 사용하는 순서에 대한 부분이었는데
dto.getTypeCd().equals("10")
이런식으로 쓴 부분이 있는데, 상수인 "10"을 앞 순서로 놓고 equals 함수를 사용하라는 내용이었다.
와... 너무 아차싶었던게 상수인 "10"은 변함이 없는 값이지만 dto에서 불러온 값은 데이터가 없어서 조회 결과가 없는 경우에는 해당 값이 null 이 되면서
NullPointerException이 발생할 수도 있다.
권고하는 equals 함수 사용 순서
"고정값" 또는 NULL이 발생할 가능성이 제일 적은 값.equals(비교하고자 하는 값)
이런 형태로 사용하면 첫번째 값은 NULL이 발생할 가능성이 가장 적은 값이기 때문에 오류가 발생하지 않을 것이고, 비교하고자 하는 값은 NULL이라고 하더라도 결과값은 false로 반환된다.
순서를 이렇게 사용한다면 equals 함수를 사용하면서 문제가 발생할 가능성을 줄일 수 있다.
너무 당연하게 습관적으로 사용해왔던 것들도 이런 기회로 고쳐서 좀 더 나은 코드를 만들 수 있다.
물론 그러려면 이런 확인을 지적이라고 생각하지 않을 열린 마음을 가지고 있어야 한다 😀
'PROGRAM > JAVA / JSP' 카테고리의 다른 글
[Spring] @Transactional의 주요 설정 (isolation, propagation, readOnly) (0) | 2022.05.19 |
---|---|
도로명 주소 API 연동방식, 외부 API 연동 시 유의사항 (0) | 2020.12.14 |
for 반복문 중첩 빠져나오기 - break label (0) | 2020.04.13 |
Maven project 제대로 사용하기 : pom.xml (0) | 2019.05.23 |
QR코드 생성방식 (Google Chart API 대체) (0) | 2019.03.19 |