본문 바로가기
Java

[Java] 단축 평가, 좋은 if문을 작성하는 방법

by 상후 2022. 11. 19.
728x90
반응형

단축 평가(Short-circuit Evaluation)

논리 연산자 작성 시 고려해보면 좋을 개념입니다.


/**
* 어떤 조건문이 더 좋을까?
* first() : 1초 소요
* second() : 10초 소요
*/
if ( fisrt() || second() ) {
  // 1번
}

if ( second() || fisrt() ) {
  // 2번
}

두 조건문은 동일한 결과를 반환하겠지만 처리되는 속도에는 차이가 날 수있다.

OR 문은 하나라도 참이면 조건을 성립한다.
1번(위) 조건문은 최소 1초만에 조건을 만족할 수 있다.
2번(아래) 조건문은 최소 10초만에 조건을 만족할 수 있다.

즉, 1번(위) 조건문이 더 빠르다.


/**
* 어떤 조건문이 더 좋을까?
* first() : 1초 소요
* second() : 10초 소요
*/
if ( fisrt() && second() ) {
  // 3번
}

if ( second() && fisrt() ) {
  // 4번
}

AND 문은 실패(false)의 경우를 비교해보면 된다.
3번 조건문은 최소 1초만에 조건문이 종료된다.
4번 조건문은 최소 10초만에 조건문이 종료된다.

즉, 3번 조건문이 더 빠르다.

이 처럼 논리연산자를 포함한 조건문을 작성할 때 해당 개념을 한 번 생각한 뒤 작성하거나, 리팩토링 대상으로 점검해보는 것이 좋다.


참고

728x90
반응형

댓글