더북(TheBook)

코드 자체는 별로 복잡하지 않습니다. 깊은 중첩도, 조건 분기도 없고 심지어 변수명이나 메서드명도 의미를 지닙니다. 그런데도 읽기 어렵습니다. 더하기와 따옴표, 공백이 많아 실제로 어떻게 처리되는지 혼란스럽죠(일반적으로 인간은 기호의 조합보다 자연어 속 단어를 이해하는 데 더 능합니다). 그래서 코드는 읽기 어려워졌고 작성할 때 실수할 가능성도 커졌습니다.

게다가 int 값을 합치는 인라인 계산 실행도 혼란을 가중시킵니다. + 연산자는 Stringint일 때 시맨틱이 서로 다르니까요. 하나의 행에서 + 연산자를 서로 다른 시맨틱으로 사용하면 전체적으로 무엇을 하는 코드인지 알기 더 어렵습니다. 그렇게 하면 안 됩니다!

코드를 대폭 간소화할 수 있습니다. 아래 코드를 보세요.

class Mission {

    Logbook logbook;
    LocalDate start;

    void update(String author, String message) {
        final LocalDate today = LocalDate.now();
        String entry = String.format("%S: [%tm-%<te-%<tY](Day %d)> %s%n", 
                 author, today, 
                 ChronoUnit.DAYS.between(start, today) + 1, message);
        logbook.write(entry);
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.