코드를 읽을 때는 일반적으로 긍정 표현을 이해하기가 더 쉽습니다. 부정 표현은 간접적인 행동 계층을 하나 더 추가합니다. 단순히 “X가 해당된다”가 아니라 “X가 해당되지 않는다”라는 표현을 추가로 이해해야 하죠.
추가 표현은 대부분 불필요합니다. 사소한 변경처럼 보이지만 매우 작은 단순화가 모여 (실제 코드에서 볼 수 있는) 더 복잡한 표현식에 도움을 줍니다.
누구나 부정이 없는 표현을 좋아한다는 사실을 꼭 기억하세요.
이제 간소화한 코드를 봅시다.
class Laboratory { Microscope microscope; Result analyze(Sample sample) { if (microscope.isOrganic(sample)) { return analyzeOrganic(sample); } else { return Result.INORGANIC; } } private Result analyzeOrganic(Sample sample) { if (microscope.isHumanoid(sample)) { return Result.HUMANOID; } else { return Result.ALIEN; } } }