Chapter3. 함수
3.0 좋지 않은 함수
package clean.code.chapter03;
import clean.code.added.to.make.code.build.*;
public class HtmlUnit {
public static String testableHtml(
PageData pageData,
boolean includeSuiteSetup
) throws Exception {
WikiPage wikiPage = pageData.getWikiPage();
StringBuffer buffer = new StringBuffer();
if (pageData.hasAttribute("Test")) { if (includeSuiteSetup) {
WikiPage suiteSetup =
PageCrawlerImpl.getInheritedPage(
SuiteResponder.SUITE_SETUP_NAME, wikiPage
);
if (suiteSetup != null) {
WikiPagePath pagePath =
suiteSetup.getPageCrawler().getFullPath(suiteSetup);
String pagePathName = PathParser.render(pagePath);
buffer.append("!include -setup .")
.append(pagePathName)
.append("\n");
}
}
WikiPage setup =
PageCrawlerImpl.getInheritedPage("SetUp", wikiPage);
if (setup != null) {
WikiPagePath setupPath =
wikiPage.getPageCrawler().getFullPath(setup);
String setupPathName = PathParser.render(setupPath);
buffer.append("!include -setup .")
.append(setupPathName)
.append("\n");
}
}
buffer.append(pageData.getContent());
if (pageData.hasAttribute("Test")) {
WikiPage teardown =
PageCrawlerImpl.getInheritedPage("TearDown", wikiPage);
if (teardown != null) {
WikiPagePath tearDownPath =
wikiPage.getPageCrawler().getFullPath(teardown);
String tearDownPathName = PathParser.render(tearDownPath);
buffer.append("\n")
.append("!include -teardown .")
.append(tearDownPathName)
.append("\n");
}
if (includeSuiteSetup) {
WikiPage suiteTeardown =
PageCrawlerImpl.getInheritedPage(
SuiteResponder.SUITE_TEARDOWN_NAME,
wikiPage
);
if (suiteTeardown != null) {
WikiPagePath pagePath =
suiteTeardown.getPageCrawler().getFullPath (suiteTeardown);
String pagePathName = PathParser.render(pagePath);
buffer.append("!include -teardown .")
.append(pagePathName)
.append("\n");
}
}
}
pageData.setContent(buffer.toString());
return pageData.getHtml();
}
}3.1 작게 만들어라
3.2 한 가지만 해라
3.3 함수 당 추상화 수준은 하나로!
위에서 아래로 코드 읽기: 내려가기 규칙
3.4 Switch 문
3.5 서술적인 이름을 사용하라
3.6 함수 인수
많이 쓰는 단항 형식
플래그 인수
이항 함수
삼항 함수
인수 객체
인수 목록
동사와 키워드
3.7 부수 효과를 일으키지 마라
3.8 명령과 조회를 분리하라
3.9 오류 코드보다 예외를 사용하라
Try/Catch 블록 뽑아내기
오류 처리도 한 가지 작업이다
3.10 반복하지 마라
3.11 구조적 프로그래밍
3.12 함수를 어떻게 짜지?
3.13 결론
Last updated