<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();
}
위 코드는 한 가지만 하는 것일까? 다음과 같이 세 가지를 한다고 주장할 수 있다.
하지만 위 세 단계는 지정된 함수 이름 아래에서 추상화 수준이 하나다. 다음과 같이 기술할 수 있다.
페이지가 테스트 페이지인지 확인한 후 테스트 페이지라면 설정 페이지와 해제 페이지를 넣는다. 테스트 페이지든 아니든 페이지를 HTML로 렌더링한다.