더북(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); // 보안 위험
    }
}