일반적으로 if 문은 아래와 같이 진행됩니다.
if(){
//진행
}else{
//예외를 던짐
}
코드를 진행하기에 앞서 if문으로 검사를 하고 예외의 경우 else문에서 예외를 던집니다.
예시
문자열이 비었는지를 체크하고 코드를 진행하는 로직을 2가지로 제시해보겠습니다.
if(!isEmpty(exStr)){
execute();
}else{
throw new Exception("String is empty!");
}
if(hasContent(exStr)){
execute();
}else{
throw new Exception("String is empty!");
}
차이점은 첫번째 방법은 조건문에 부정연산자가 들어갔다는 것입니다. 결론은 두번째 방법이 좀더 클린한 코드가 되겠습니다. 왜냐면 아래와 같이 조금만 조건문의 의도가 복잡해져도 헷갈리기 때문입니다.
if(!A.isBiggerThan(B)){
execute();
}else{
throw new Exception("A is Bigger than B!");
}
if(A.isSmallerThan(B)){
execute();
}else{
throw new Exception("A is Bigger than B!");
}
두 조건절은 똑같이 A가 B보다 작을 경우에만 실행하지만 알고리즘의 의도를 파악하기에는 두번째가 더 쉽습니다.
결론
이렇듯 일반적인 조건문에서 실행하고자하는 첫 if문의 조건문에는 부정연산자가 들어가지 않는 "참인 경우"를 연산하는 것이 알고리즘의 의도를 파악하기에 더 용이합니다.
참고
https://schneide.blog/2014/08/03/dont-ever-not-avoid-negative-logic/
'Programming > 삽질일기' 카테고리의 다른 글
[Java] 테스트 코드에서 lombok 사용하기 (0) | 2023.12.29 |
---|---|
[Java] JMH 벤치마크 중 org.openjdk.jmh.runner.RunnerException: ERROR: Another JMH instance might be running. (1) | 2023.12.27 |
[Java] java.lang.UnsupportedOperationException ImmutableCollections (0) | 2023.12.20 |
[JS, WEB] bfcache와 웹 브라우저 최적화 (뒤로 / 앞으로 캐시) (0) | 2023.02.28 |
[SPRING] @Qualifier : 동일한 이름의 bean이 존재한다면? (0) | 2022.01.14 |
댓글