Part 1 코드 정리법Chapter 1 보호 구문Chapter 2 안 쓰는 코드Chapter 3 대칭으로 맞추기Chapter 4 새로운 인터페이스로 기존 루틴 부르기Chapter 5 읽는 순서Chapter 6 응집도를 높이는 배치Chapter 7 선언과 초기화를 함께 옮기기Chapter 8 설명하는 변수Chapter 9 설명하는 상수Chapter 10 명시적인 매개변수Chapter 11 비슷한 코드끼리Chapter 12 도우미 추출Chapter 13 하나의 더미Chapter 14 설명하는 주석Chapter 15 불필요한 주석 지우기*옮긴이의 소통 기록Part 2 관리Chapter 16 코드 정리 구분Chapter 17 연쇄적인 정리Chapter 18 코드 정리의 일괄 처리량Chapter 19 리듬Chapter 20 얽힘 풀기Chapter 21 코드 정리 시점*옮긴이의 소통 기록Part 3 이론Chapter 22 요소들을 유익하게 관계 맺는 일Chapter 23 구조와 동작Chapter 24 경제 이론: 시간 가치와 선택 가능성Chapter 25 오늘의 1달러가 내일의 1달러보다 크다Chapter 26 옵션Chapter 27 옵션과 현금흐름 비교Chapter 28 되돌릴 수 있는 구조 변경Chapter 29 결합도Chapter 30 콘스탄틴의 등가성Chapter 31 결합도와 결합도 제거Chapter 32 응집도Chapter 33 결론*옮긴이의 소통 기록Part 4 참고 문헌 및 옮긴이 특별 부록Appendix A 참고 문헌Appendix B 켄트 벡의 글을 번역하며 알게 된 것들Appendix C 개발자가 테스트를 보는 세 가지 관점Appendix D 소프트웨어 설계 20년 해 보고 깨달은 ‘좋은 설계’의 조건Appendix E 느슨한 결합(loosely coupled) 원칙을 활용한 소프트웨어 설계Appendix F 소프트웨어 ‘설계’의 정의는 변해야 한다