더북(TheBook)

1.8 코드 대칭 이루기

class BoardComputer {

    CruiseControl cruiseControl;

    void authorize(User user) {
        Objects.requireNonNull(user);
        if (user.isUnknown()) {
            cruiseControl.logUnauthorizedAccessAttempt();
        } else if (user.isAstronaut()) {
            cruiseControl.grantAccess(user);
        } else if (user.isCommander()) {
            cruiseControl.grantAccess(user);
            cruiseControl.grantAdminAccess(user);
        }
    }
}

코드의 이해도(understandability)가 얼마나 중요한지 이미 몇 번 강조했습니다. 조건 분기를 대칭적 방법으로 구조화하면 코드를 쉽게 이해하고 파악할 수 있습니다. 나중에 누가 그 코드를 관리하든 기능을 더 빨리 찾고 더 쉽게 버그를 찾아낼 수 있죠.

위 코드는 1.6 스위치 실패 피하기1.7 항상 괄호 사용하기에서 보았던 코드를 좀 다르게 수정했습니다. 조건 여러 개를 else if 블록 두 개를 사용해 하나의 조건으로 묶었습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.