3장 함수
클린 코드 3장을 요약한 내용 입니다.
자, 3분을 줄테니 코드를 살펴보자.
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();
}
한 가지만 해라

함수 당 추상화 수준은 하나로
Switch 문
위 함수에는 몇 가지 문제가 있다.
서술적인 이름을 사용하라!

함수 인수
많이 쓰는 단항 형식
플래그 인수
이항 함수
인수 객체
인수 목록
부수 효과를 일으키지 마라!
명령과 조회를 분리하라!

오류 코드보다 예외를 사용하라!
Try/Catch 블록 뽑아내기
반복하지 마라!
함수를 어떻게 짜죠?
결론
Last updated