이미 소장하고 있다면 판매해 보세요.
|
역자서문 5
서문 13 1장... 로드맵 | 19 개관 | 19 1부: 클래스 내부의 냄새 | 20 2부: 클래스 사이의 냄새 | 20 3부: 프로그램 리팩터링 | 21 도전사항에 대해 한 마디 | 22 1부 클래스 내부의 냄새 | 23 2장... 리팩터링 사이클 | 25 리팩터링이란 무엇인가? | 25 냄새는 문제다 | 26 리팩터링 사이클 | 27 언제 끝내야 할까? | 28 리팩터링 내부 | 31 도전사항 | 35 결론 | 35 3장... 측정할 수 있는 냄새 | 37 다루는 냄새 | 38 주석 | 38 긴 메서드 | 41 거대한 클래스 | 46 긴 매개변수 리스트 | 52 추가 도전사항 | 54 결론 | 55 쉬어가기1... 냄새와 리팩터링 | 57 4장... 이름 | 63 다루는 냄새 | 64 타입이 내장되어 있는 이름(헝가리안 표기법 포함) | 65 의사소통을 방해하는 이름 | 66 일관성 없는 이름 | 68 5장... 불필요한 복잡성 | 71 다루는 냄새 | 71 죽은 코드 | 72 추측성 일반화 | 73 쉬어가기2... 역관계 리팩터링 | 75 6장... 중복 | 77 다루는 냄새 | 78 매직 넘버 | 78 중복된 코드 | 79 다른 인터페이스를 갖는 대체 클래스 | 81 도전사항 | 82 7장... 조건 로직 | 89 다루는 냄새 | 90 Null 체크 | 90 복잡한 Boolean 표현식 | 91 특별 케이스 | 93 가장된 상속(Switch 문) | 94 쉬어가기3... 디자인 패턴 | 101 2부 클래스 사이의 냄새 | 103 8장... 데이터 | 105 다루는 냄새 | 105 기본 타입에 대한 강박관념 | 106 데이터 클래스 | 110 데이터 덩어리 | 115 임시 필드 | 116 9장... 상속 | 119 다루는 냄새 | 119 거부된 유산 | 120 부적절한 친밀(하위 클래스 형태) | 122 게으른 클래스 | 123 10장... 책임 | 125 다루는 냄새 | 125 기능에 대한 욕심 | 126 부적절한 친밀(일반적인 형태) | 128 메시지 체인 | 129 미들 맨 | 132 도전 문제 | 133 11장... 변경 수용하기 | 137 다루는 냄새 | 137 여러 원인에 의한 변경 | 138 산탄총 수술 | 141 평행 상속 계층구조 | 143 조합적 폭발 | 144 12장... 라이브러리 클래스 | 147 다루는 냄새 | 147 불충분한 라이브러리 클래스 | 147 도전 문제 | 149 쉬어가기4... 리팩터링 생성하기 | 153 3부 프로그램 리팩터링 | 155 13장... 데이터베이스 예제 | 157 Course.java | 159 Offering.java | 161 Schedule.java | 163 Report.java | 167 TestSchedule.java | 169 TestReport.java | 173 14장... 간단한 게임 | 179 개발 에피소드 | 187 15장... 목록 | 191 도입 | 191 경로 1: Catalog.itemsMatching(query) | 192 경로 2: Query.matchesIn(catalog) | 196 경로 3: Process(catalog.data, query.data) | 197 결론 | 198 16장... 계획 짜기 게임 시뮬레이터 | 199 1부: 초기 코드 | 200 Table.java | 200 Background.java | 2005 Card.java | 206 2부: 기능 재분배하기 | 212 중복, 선택 문제, 몇 가지 거친 조각 제거하기 | 215 3부: 코드 좀더 다듬기 | 219 17장... 향후 과제 | 223 책 | 223 권고 사항 | 223 시도해 볼 만한 것들 | 224 웹 사이트 | 226 4부 부록 | 227 부록A... 연습문제 해답 | 229 부록B... 자바 리팩터링 도구들 | 269 부록C... 각 리팩터링의 역관계 리팩터링 | 271 부록D... 주요 리팩터링 기법 | 273 참고 자료 | 277 찾아보기 | 279 |