객체지향 생활 체조 - 규칙 2: else 예약어 금지

no else

else 예약어(keyword)를 쓰지 않는다.

이 규칙이 가지는 의미

일반적으로 개발자라면 if/else 구문을 쉽게 이해할 수 있습니다. 구문 자체가 조건을 나타내는 동시에 간단하기 때문입니다. 그렇다 보니 개발자는 쉽게 Callback hell처럼 보이는 반복되는 중첩 조건문이나 무수히 많은 switch/case 구문을 마주하게 됩니다. 신규 기능이 추가되거나 수정사항이 발생하면 기존의 코드를 리팩터링 하기보다는 분기하는 조건문을 넣는 게 쉽기 때문입니다. 결국 if/else, switch/case와 같은 분기 구문은 안 좋은 코드를 양산하기 쉬워집니다. "else 예약어 금지" 규칙은 단순히 if/else 만 사용하지 않는 것이 아니라 switch/case 구문을 포함한 분기 구문을 사용하지 않게 만들어 코드를 복잡하지 않고 간단명료하게 만들어줍니다.

예제 코드

적용 전

public static String print() {
    if (status == PREPARED) {
        doSomething();
    } else {
        // other code
    }
}

적용 후

public static String print() {
    if (status == PREPARED) {
        doSomething();
    }

    // other code
}

정리하기

예시처럼 간단한 분기문이라면 조기 반환(early return)이나 보호절(guarnd clause)을 이용해 간단하게 else를 사용하지 않는 방법도 있지만 조기 반환문을 너무 많이 사용하는 경우에는 간결함을 저해할 수도 있습니다. 그렇기 때문에 객체지향 언어에서 가지는 특성 중 다형성(Strategy Pattern)을 이용하거나 Null 오브젝트 패턴을 사용해보는 것도 고려해볼 수 있습니다.

 

소프트웍스 앤솔러지 - 객체지향 생활 체조 학습하기

반응형

댓글

Designed by JB FACTORY