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