본문 바로가기
My Image
프로그래밍/Java

[JAVA] equal() 함수 사용 시 주의 점 (리스크를 줄이는 방법)

by Lim-Ky 2021. 3. 16.
반응형

안녕하세요~ 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 의 코드를 수정하라고 하기도 합니다!! 그만큼 조금이나마 리스크를 줄이기 위함이겠죠..? 

 

반응형

댓글