5. 함수는 한 가지만 해야 한다.

djunnni·2020년 9월 20일
0

Book

목록 보기
5/6

함수는 한 가지만 해야한다.

클린코드를 읽다가 매번 보는 문구지만 당연하지만 명확하게 이해할 수 없었다. 다행히 뒷부분에 좋은 코드가 있어서 올려두고 기억하려고 한다.

public void pay() {
	for(Employee e : employees) {
    		if(e.isPayday()) {
            	Money pay = e.calculatePay();
                e.deliverPay(pay);
            }
    	}
}

코드가 3가지 임무를 수행한다.

  1. 직원 목록 루프돌기
  2. 월급일 확인하기
  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개다.

profile
https://djunnni.tistory.com/ 로 이전합니다.

0개의 댓글