더북(TheBook)

간단합니다. 여백이 빠졌습니다! 무엇보다 getConversionRate() 내 코드가 서로 붙어 있습니다. 그런데 이 함수는 정말 하나의 블록인가요, 아니면 서로 다른 부분으로 구성되어 있나요? 빈 줄을 구분자처럼 추가하면 코드 가독성을 높일 수 있습니다. 한 가지 개념이나 주장을 새 줄로 분리한 문단들로 구성한 이 책처럼요.

enum 값은 보다시피 빈 줄을 사용해 상수와 분리했습니다. 하지만 코드에 하이라이팅한 두 줄을 보세요. 정말 문제가 없어 보이나요?*

그렇다면 다음과 같은 질문을 던져야 합니다. 빈 줄을 어디에 두어야 할까요? 어떤 부분들을 서로 분리해야 할까요? 어떤 부분들을 서로 합쳐야 할까요?

enum DistanceUnit {

    MILES, KILOMETERS;

    static final int IDENTITY = 1;

    static final double MILE_IN_KILOMETERS = 1.60934;
    static final double KILOMETER_IN_MILES = 1 / MILE_IN_KILOMETERS;

    double getConversionRate(DistanceUnit unit) { 
        if (this == unit) {
            return IDENTITY; 
        }

        if (this == MILES && unit == KILOMETERS) { 
            return MILE_IN_KILOMETERS;
        } else {
            return KILOMETER_IN_MILES;
        } 
    }
}

 

 

* 분명히 코드는 다소 불안정합니다. 메서드를 새로 작성하지 않는 한, 새로운 단위 변환은 추가하기 힘들죠. 다만 이 절은 확장성이 아닌 서식화를 다루고 있으니 일단 이 문제는 무시하겠습니다.

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