더북(TheBook)

권한을 부여하는 코드권한을 부여하지 않는 코드가 섞여 있었던 탓에 코드에 비대칭성이 생겼습니다. 두 코드를 서로 다른 코드 블록으로 분리하면 코드 대칭성을 향상시킬 수 있습니다.

각 코드 블록은 서로 다른 접근 유형을 별개의 if 문으로 묶습니다. 먼저 승인되지 않은 접근을 처리하고 로깅하고 메서드를 종료합니다. 이어서 나머지 두 경우를 하나의 if와 연결된 else if 블록으로 처리합니다.

이제 두 번째 코드 블록에 승인된 접근 유형 두 가지만 들어 있으니 대칭을 이룹니다. 새로운 구조는 조건이 뜻하는 바를 더 명확히 전달합니다. 스위치 실패에서 보았던 실패 버그(fall-through bug)가 우연히 일어날 가능성도 더 이상 없고요.

최적화할 여지가 아직 남았습니다. 예를 들어 두 번째 조건의 양 분기에서 grantAccess()를 동일한 인수로 호출하고 있네요. 두 조건을 별개의 비공개(private) 메서드로 추출할 수 있습니다. 이렇게 하면 코드의 목적이 훨씬 더 명확해지죠.

승인되지 않은 접근을 코드 상단에서 처리하도록 옮긴 부분은 5장에서 다룰 5.1 빠른 실패에서 더 설명하겠습니다.

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