설계는 단순하게 해야한다.
모든 테스트를 실행한다.
중복을 없앤다.
abstract public class VacationPolicy {
public void accrueVacation() {
caculateBseVacationHours();
alterForLegalMinimums();
applyToPayroll();
}
private void calculateBaseVacationHours() { /* ... */ };
abstract protected void alterForLegalMinimums();
private void applyToPayroll() { /* ... */ };
}
public class USVacationPolicy extends VacationPolicy {
@Override protected void alterForLegalMinimums() {
// 미국 최소 법정 일수를 사용한다.
}
}
public class EUVacationPolicy extends VacationPolicy {
@Override protected void alterForLegalMinimums() {
// 유럽연합 최소 법정 일수를 사용한다.
}
}
프로그래머의 의도를 표현한다.
클래스와 메서드 수를 최소로 줄인다.
자신이 이해하는 코드는 짜기 쉽다.
하지만 장기적인 유지보수는 해당 프로젝트가 커감에 필수적이다.
아래 항목을 따라가야한다.
나중에 코드를 읽을 사람은 바로 자신이다.