안녕하세요~ Limky 입니다.
오늘은 간략하게, equal() 함수 사용시 조금 더 리스크를 줄이면서 사용할 수 있는 방법에에 대해서 알아보겠습니다.
아래 코드를 보면 사실 좋은 코드는 아닙니다.
String s라는 변수에 값을 할당했지만, 만약 값이 할당되지 않는다면
변수.equal() 부분 즉, s.equals("변수") 부분에서 nullexception이 발생하기 때문이죠.
그럼 어떻게 방지할 수 있을까요? 사실 null check 로직을 넣으면 됩니다.
if(s != null) 을 심어서 체크하면 되지요.
헌데, 만약 null check를 하지 않았고 그래도 nullexception이 발생되지 않게 하려면 어떻게 할 수 있을까요?
바로 아래 "하드코딩".equals(s) 같은 형태로 코딩하면 됩니다.
그렇다면 왜 nullexception이 발생하지 않을까요? equals()함수에 들어가는 파라미터 값을 equals 함수 내부적으로
null check를 해주기 때문입니다. 따라서 runtime 시에 exception은 방지할 수 있습니다.
다시말하지만, 아래 코드는 좋은 코드는 아닙니다. 다만 어떻게하면 조금 더 최악의 상황을 면할 수 있을지에 대해선
고민해볼 필요가 있습니다.
사실, 금융 IT현장에 가면 아래와 같은 코드들이 많이 있습니다. 하드코딩을 지양해야하나 변수가 많이 변경되지 않을거라 생각해서 코딩한 코드가 변경되어 그래도 하드코딩이 남아있거나, 하드코딩을 다 제거하고 싶어도 금융 시스템은 에러시 업무 영향도가 크기 때문에 선뜻 개발자들이 고치지 않기 때문이죠. 아무튼!! 이글에서 제가 말씀드리고 싶었던 것은 어쩔 수 없이 아래와 같은 형태의 코딩이 되어있는 환경에서 equals 함수를 써야한다면 "하드코딩".equals(변수) 형태로 사용하는 것이 그나마 낫다는 것입니다.
실제로 code inspection tool를 수행해보면 9 Line에 코드보다 14 Line의 코드를 안전하다고 판단하고 9 Line 의 코드를 수정하라고 하기도 합니다!! 그만큼 조금이나마 리스크를 줄이기 위함이겠죠..?
'프로그래밍 > Java' 카테고리의 다른 글
[JAVA] 클래스와 인터페이스의 접근제어자 (0) | 2021.11.25 |
---|---|
POI라이브러리 + AJax + myBatis resultHandler 이용한 excel 대용량 다운로드 기능 구현(심플버전)_2편 (0) | 2021.11.15 |
[JAVA] 문자열 contains과 equals 함수 NULL체크 차이점 (2) | 2020.08.05 |
[JAVA] 자바 Exception 개념 및 예외 처리란? (3) | 2020.01.08 |
[JAVA] 자바 인터페이스란?(Interface)_이 글 하나로 박살내자 (31) | 2019.12.10 |
댓글