더북(TheBook)

switch에서 이 문제를 알아차렸더라도 if에서 여전히 간과할 수 있습니다. 들여쓰기를 올바르게 하더라도 마감을 앞두고 정신없이 바쁠 때는 아무도 버그를 알아채지 못할 수도 있죠. 그래서 항상 괄호를 사용하는 것이 좋습니다.

해법이 항상 완벽한 것은 아닙니다

코드를 명쾌하게 만들기는 정말 어렵습니다. 이미 깨달았을 수도 있지만 비교 과정을 두 번 이상 거쳐 코드를 반복적으로 향상시킬 수 있습니다. 한 번에 하나씩 향상시키는 것을 목표로 정하고 현재 주제에 집중하기 위해 그 밖의 코드 품질 기준은 무시하기도 합니다. 뒤이어 나오는 해법을 읽을 때 이 점을 명심하세요. 향상시킬 방법은 거의 항상 여전히 더 있습니다.

이제 올바른 코드를 살펴봅시다.

class BoardComputer {

    CruiseControl cruiseControl;

    void authorize(User user) {
        Objects.requireNonNull(user);
        if (user.isUnknown()) {
            cruiseControl.logUnauthorizedAccessAttempt();
        }
        if (user.isAstronaut()) {
            cruiseControl.grantAccess(user);
        }
        if (user.isCommander()) {
            cruiseControl.grantAccess(user);
        }
        cruiseControl.grantAdminAccess(user); // 보안 위험
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.