목차
추천사
역자 서문
저자 서문
Chapter 1 <B><FONT color ... #0000
   <B><FONT color ... #0000
   세 가지 극단적인 기법 ... 25
      추상화 ... 25
      관심 사항의 분리 ... 25
      가독성 ... 26
   지침들에 대한 소개 ... 26
      상황이 가장 중요하다 ... 27
      자신의 방식에 익숙해져라 ... 28
      경험을 회고하라 ... 28
   이 책의 상황 ... 30
Chapter 2 요구 사항 작성 ... 33
   샘을 만나다 ... 34
      개발자 팀 ... 34
      샘의 요구 사항 ... 35
      샘의 유스 케이스 ... 35
      능력 ... 38
   불필요한 개발 피하기 ... 38
   이름의 의미가 무엇인가? ... 39
   분할 대 결합 ... 42
   클럼핑 ... 44
   추상화 ... 45
      단순한 문자열이 아니다 ... 47
      상수 피하기 ... 50
   프로토타입은 천 마디 말과 같다 ... 51
Chapter 3 일반적인 개발 이슈 ... 53
   큰 그림 먼저 ... 54
   인터페이스 계약 ... 55
   검증 ... 57
   코드로 말하라 ... 59
      암시적인 방법과 명시적인 방법 ... 60
      생략하지 말고 늘여 써라 ... 61
      이해할 수 있는 이름을 사용하라 ... 62
      코드의 철자를 검사하라 ... 63
      주어진 환경에 맞도록 방식을 변경하라 ... 63
   일관성이 곧 단순함이다 ... 64
   <B><FONT color ... #0000
   반복하지 마라 ... 67
   가정과 결정에 대한 문서화 ... 67
   이탈(Deviation)과 에러(Error) 처리하기 ... 68
      고장 거리 ... 70
      사용자 메시지 ... 72
      어설션 ... 73
   속도 ... 73
   스프레드시트 수수께끼 ... 76
      그래픽 예제 ... 77
      담당자는 누구? ... 78
   툴은 툴이다. 현명하게 사용하라 ... 80
      IDE 다루기 ... 80
      여러 가지 툴들 ... 80
Chapter 4 큰 그림 그리기 ... 83
   나머지 이야기 ... 84
   프로세스 ... 85
      분석 정체 ... 86
      설계 정체 ... 87
   초기 설계 ... 88
   크게 계획하고 지엽적으로 설계하라 ... 91
   기능 테스팅 ... 93
      프랙탈은 어디에든 있다 ... 95
      테스트 피드백 ... 97
   테스팅 품질 ... 98
   보안 ... 98
Chapter 5 클래스 작성 ... 101
   카테고리와 클래스 ... 102
      서로 다른 클래스들 ... 102
      서로 다른 객체들 ... 104
   선언과 실행 ... 106
   적절한 상속 ... 107
   텍스트로 의사소통하라 ... 110
   하나 이상의 객체 ... 111
Chapter 6 클래스 살펴보기 ... 115
   클래스 격언을 따르라 ... 116
      응집도 ... 116
      결합 ... 117
   객체의 세 가지 법칙 ... 118
   용도에 따라서 클래스가 결정된다 ... 120
   다형성 ... 123
      상속을 사용하는 방법 ... 123
      인터페이스를 사용하는 방법 ... 124
   한 가지 간단한 일 ... 127
   정책과 구현 ... 129
   극단적인 이름 작성 ... 130
   함수 오버로드 ... 130
Chapter 7 완성 단계 ... 133
   프로젝트 진행 상황 ... 134
   관심 사항의 분리 ... 137
      대여 계약의 계산 ... 139
      대여 계약의 생성 ... 142
      보고서 출력하기 ... 143
      변경 및 영향 ... 143
   새로운 시스템으로 마이그레이션 ... 144
      지금 사용되는 데이터 읽어 들이기 ... 144
      잠재적인 문제점에 대한 예측 ... 146
      고유함 결정하기 ... 147
Chapter 8 첫 번째 릴리즈 ... 149
   백문이 불여일견 ... 150
   회고시간 ... 150
   시스템의 현재 상태 ... 152
   연산 인터페이스 ... 152
   추상 데이터 타입 ... 153
   환경 구성 ... 154
   테스팅 ... 154
      테스트와 제품 ... 155
      테스팅 유연성 ... 156
   이탈과 에러 처리 ... 157
      에러와 이탈 알리기 ... 157
      이탈 규약들 ... 157
      파일을 임포트할 때 발생하는 에러들 ... 159
   간단한 <B><FONT color ... #0000
      분할과 결합 ... 159
      <B><FONT color ... #0000
   첫 번째 릴리즈 반복 ... 160
   때때로 이론과 실제는 일치하지 않는다 ... 161
      의도하지 않은 결합 ... 161
      완전한 것은 아무 것도 없다 ... 161
      언제나 예외는 있다 ... 162
      약간의 오해 ... 163
   그 밖의 클래스들 ... 164
Chapter 9 연관과 상태 ... 167
   샘의 새로운 요구 사항 ... 168
   담당자 결정 ... 169
      담당 클래스 ... 169
      연관 클래스 ... 170
   객체의 상태 ... 171
      상태 다이어그램 ... 172
      이진 상태의 표현 ... 173
      두 가지 이상의 상태 ... 173
      가능한 모든 경우를 확인하라 ... 175
Chapter 10 인터페이스와 적응 ... 177
   카탈로그 검색 유스 케이스 ... 178
   인터페이스 설계 ... 180
      CD란 무엇인가? ... 181
      약간 성급한 걱정 ... 182
   인터페이스 개발 ... 184
   인터페이스 테스팅 ... 185
   인터페이스 분할 ... 186
   작동하는 기능 ... 187
      한계 설정 ... 188
      공통적인 코드 ... 189
Chapter 11 우편번호와 인터페이스 ... 191
   적응 ... 192
   책임 전가 ... 196
   작성하지 않은 코드 ... 198
      애스펙트 지향 프로그래밍 ... 199
      많든 적든, 그게 그거 ... 200
   간접 지정 ... 201
   로깅 ... 204
   패러다임 불일치 ... 206
Chapter 12 보고서 추가 ... 207
   멋진 보고서 ... 208
      과유불급(過猶不及) ... 208
      다시 보는 스프레드시트 수수께끼 ... 209
   변경이 발생하다 ... 211
   내보내기 ... 214
Chapter 13 송장, 신용카드, 할인 ... 217
   다음 단계 ... 218
      장애 처리 ... 220
      테스트 계획 수립 ... 222
   고객의 언어 ... 223
   보안과 개인정보 보호 ... 227
      보안 ... 227
      개인정보 보호 ... 227
Chapter 14 샘이 매장을 확장하다 ... 229
   두 번째 가게 ... 230
   새로운 개발 ... 233
      인터페이스 계약 ... 233
      찬 공기가 들어오지 못하도록 하라 ... 234
   세 번째 가게 ... 235
      통화 융통성 ... 235
      언어 융통성 ... 238
   샘과 작별 ... 239
   일반화 ... 240
Chapter 15 프린트 서버 예제 ... 241
   소개 ... 242
   시스템 ... 242
   Message 클래스 ... 244
      구체적인 메시지 ... 245
      메시지 처리 ... 246
      환경 ... 249
      예제 메시지 ... 249
   테스트 ... 251
   로깅 ... 252
   추가적인 분할 ... 253
   에필로그 ... 256
Chapter 16 스팸 방지 예제 ... 257
   상황 ... 258
      환경 ... 258
   SMTP ... 259
      상태 다이어그램 ... 261
   스팸 검사 ... 263
   ReceivingMailServer 클래스 ... 264
      Response 클래스 ... 267
      프로세스 메서드 ... 268
      MailDTO 클래스 ... 269
      명령 처리 ... 271
      다른 방법 ... 272
   ReceivedMailExaminer ... 273
      또 다른 인터페이스 ... 274
      다른 방식의 책임 부여 ... 274
      MailReport ... 275
      MailExaminers 인터페이스 ... 275
      효율을 위한 고려 사항 ... 277
      관심 사항의 분리 ... 278
   전체 흐름 ... 279
에필로그 ... 282
부록 A 지침과 원칙들 ... 283
부록 B 소스 코드 ... 294
닫기