클린코드를 읽다가 매번 보는 문구지만 당연하지만 명확하게 이해할 수 없었다. 다행히 뒷부분에 좋은 코드가 있어서 올려두고 기억하려고 한다.
public void pay() {
for(Employee e : employees) {
if(e.isPayday()) {
Money pay = e.calculatePay();
e.deliverPay(pay);
}
}
}
코드가 3가지 임무를 수행한다.
함수를 3가지로 나누어 보자
public void pay() {
for(Employee e: employees) {
payIfNecessary(e);
}
}
private void payIfNecessary(Employee e) {
if(e.isPayday()) {
calculateAndDeliverPay(e);
}
}
private void calculateAndDeliverPay(Employee e) {
Money pay = e.calculatePay();
e.deliverPay(pay);
}
이처럼 각 함수는 1가지 임무만 수행한다.
함수는 이름 아래 추상화 수준이 1개다.