Notice
Recent Posts
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- Repository
- 2장
- BOJ
- N으로 표현
- 규칙
- programmers
- 문제풀이
- dp
- basis step
- 기하학
- 수학
- 0장
- 재귀
- mirror
- 3장
- 7장
- 1024
- 클린코드
- 자기호출
- 8장
- Wiki
- Clean code
- 백준
- 4장
- inductive step
- 원의 방정식
- 프로그래머스
- 6장
- recursion
- 1011
Archives
- Today
- Total
LeeA0의 공부 일기
[Clean Code] 3장. 함수 (미완) 본문
[사담]
더보기
하반기 시작되면서 책읽고 또 읽으면서 정리하는게 쉽지많은 않네요 ㅎㅎㅎ
그래도 최대한 시간내서 틈틈히 정리해보겠습니다~!
다다음주면 추석이네요 ㅎㅎㅎ
[정리]
1. 길이가 길고, 중복된 코드가 있고, 괴상한 문자열과 낯설고 모호한 자료유형과 API를 가진 코드
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 suiteSepup = 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 = WikiPage suiteSepup = 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();
}
<코드의 문제점>
- 추상화 수준이 너무 다양하다.
- 코드가 너무 길다.
- 두 겹으로 중첩된 if문은 이상한 플래그를 확인하고, 이상한 문자열을 사용하여, 이상한 함수를 호출한다.
2. 메서드를 몇 개 추출하고, 이름 몇 개를 변경하고, 구조를 조금 변경한 코드
public static String renderPageWithSetupsAndTeardowns(
PageData pageData, boolean isSuite
) throws Exception{
boolean isTestPage = pageData.hasAttribute("Test");
if(isTestPage){
WikiPage testPage = pageData.getWikiPage();
StringBuffer newPageContent = new StringBuffer();
includeSetupPages(testPage, newPageContent, isSuite);
newPageContent.append(pageData.getContent());
includeTeardownPages(testPage, newPageContent, isSuite);
pageData.setContent(newPageContent.toString());
}
return pageData.getHtml();
}
'Java > Clean Code' 카테고리의 다른 글
| [Clean Code] 4장 - 실습 (0) | 2021.09.19 |
|---|---|
| [Clean Code] 4장. 주석 (0) | 2021.09.16 |
| [Clean Code] 2장 - 실습 (0) | 2021.09.02 |
| [Clean Code] 2장. 의미 있는 이름 (0) | 2021.08.29 |
| [Clean Code] 1장. 깨끗한 코드 (0) | 2021.08.22 |
Comments