1.2 부정 피하기

    class Laboratory {
    
        Microscope microscope;
    
        Result analyze(Sample sample) {
            if (microscope.isInorganic(sample)) {
                return Result.INORGANIC;
            } else {
                return analyzeOrganic(sample);
            }
        }
    
        private Result analyzeOrganic(Sample sample) {
            if (!microscope.isHumanoid(sample)) {
                return Result.ALIEN;
            } else {
                return Result.HUMANOID;
            }
        }
    }

    “긍정적으로 생각하라”라는 말을 들어본 적 있나요? 코드에서는 긍정 표현식이 부정 표현식보다 더 낫습니다. 대부분 이해하기 더 쉽고 공간도 조금 덜 차지하니까요.

    위 코드는 Laboratory 컴포넌트를 다르게 변형한 것입니다. 메서드 두 개에서 Sample을 받아 Result를 반환합니다. 코드 내에 명백히 틀렸다고 말할 부분은 없습니다. 다만 목적에는 부합하지만 필요 이상으로 복잡합니다.

    if 조건문을 봅시다. 둘 다 부정 조건을 표현합니다. 첫 번째 조건문은 샘플이 isInorganic()인지 테스트합니다. 두 번째 조건문은 심지어 불 연산자를 사용해 부정, 즉 느낌표인 "!"로 테스트하죠.

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