더북(TheBook)

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()인지 테스트합니다. 두 번째 조건문은 심지어 불 연산자를 사용해 부정, 즉 느낌표인 "!"로 테스트하죠.

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