메서드 반환 타입이 불일 경우 불필요한 if문을 제거하여 코드를 간소화 할 수 있다.
class Astronaut {
String name;
int missions;
boolean isValid() {
if (misson < 0 || name == null || name.trin().isEmpty()) {
return false;
} else {
return true;
}
}
}
전형적인 유효성 검사 코드. 코드에 기능상 오류는 없지만 if문을 쓸데없이 사용하여 코드가 복잡하고 읽기 어렵다.
class Astronaut {
String name;
int missions;
boolean isValid() {
return misson >= 0 && name != null && !name.trin().isEmpty();
}
}
if문 다섯 줄을 코드 한 줄로 압축. 불을 반환할 때는 전체 항목을 if문으로 감쌀 필요 없이 아래처럼 값을 바로 반환할 수 있다.
(메소드가 isValid이기 때문에 논리적으로 true 가 되는 경우를 반환해야 하므로 논리연산자를 && 바꾸고, true가 되는 경우로 조건을 변경)
class Astronaut {
boolean isValid() {
boolean isValidMission = misson >= 0;
boolean isValidName = name != null && !name.trin().isEmpty();
return isValidMission && isValidName;
}
}
더 나아가 조건문을 세 개 이상 합칠 때는 위와 같은 간소화를 고려하는 것이 바람직하다. 변수에 의미 있는 이름을 지어 조건문을 더 작은 조건 덩어리로 표현한다. 또한 조건문을 다른 곳에서도 호출해야 할 경우 개별 메서드에 넣는 것이 좋다.