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 블록 두 개를 사용해 하나의 조건으로 묶었습니다.