작게 만들어라!

<aside> 💡 함수를 만드는 첫째 규칙은 ‘작게!’다. 함수를 만드는 둘째 규칙은 ‘더 작게!’다.

</aside>

이 규칙은 근거를 대기 곤란하지만 오랜 시행착오를 바탕으로 작은 함수가 좋다고 확신한다.

얼마나 짧아야 좋을까?

블록과 들여쓰기

if문, else문, while문 등에 들어가는 블록은 한 줄이어야 한다. 대개 거기서 함수를 호출한다.

한 가지만 해라!

<aside> 💡 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.

</aside>

지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다.

public static String renderPageWithSetupsAndTeardowns(
	PageData pageData, boolean isSuite) throws Exception {
	if (isTestPage(pageData))
		includeSetupAndTeardownPages(pageData, isSuite);
	return pageData.getHtml();
}

위 코드는 한 가지만 하는 것일까? 다음과 같이 세 가지를 한다고 주장할 수 있다.

  1. 페이지가 테스트 페이지인지 판단한다.
  2. 그렇다면 설정 페이지와 해제 페이지를 넣는다.
  3. 페이지를 HTML로 렌더링한다.

하지만 위 세 단계는 지정된 함수 이름 아래에서 추상화 수준이 하나다. 다음과 같이 기술할 수 있다.

페이지가 테스트 페이지인지 확인한 후 테스트 페이지라면 설정 페이지와 해제 페이지를 넣는다. 테스트 페이지든 아니든 페이지를 HTML로 렌더링한다.