목차
들어가면서 = 9
1. 스타일(Style)
1.1 이름 = 18
1.2 표현식과 문장 = 22
1.3 일관성과 관용어 = 29
1.4 함수 매크로 = 39
1.5 매직 수(Magic Numbers) = 41
1.6 주석(Comments) = 46
1.7 왜, 귀찮게 하는가? = 53
2. 알고리즘과 자료 구조
2.1 탐색 = 56
2.2 정렬 = 60
2.3 라이브러리 = 63
2.4 자바로 구현한 퀵 정렬 = 67
2.5 O-표기법(O-Notation) = 70
2.6 가변 길이 배열 = 72
2.7 리스트 = 77
2.8 트리(Trees) = 85
2.9 해시 테이블 = 92
2.10 요약 = 97
3. 설계와 구현
3.1 마르코프 체인(Markov Chain) 알고리즘 = 101
3.2 자료 구조의 여러 형태 = 103
3.3 C로 짠 자료 구조 = 105
3.4 출력 생성 = 109
3.5 자바(Java) = 113
3.6 C++ = 119
3.7 Awk & Perl = 122
3.8 성능(Performance) = 125
3.9 알고 가기 = 127
4. 인터페이스(Interface)
4.1 콤마로 분리된 값들 = 133
4.2 프로토타입 라이브러리 = 135
4.3 다른 사람들을 위한 범용적 라이브러리 = 140
4.4 C++ 언어로의 구현 = 153
4.5 인터페이스 원리 = 159
4.6 자원 관리 = 163
4.7 포기, 재시도, 실패? = 167
4.8 사용자 인터페이스 = 174
5. 디버깅(Debugging)
5.1 디버거(Debugger) = 181
5.2 좋은 단서와 쉬운 버그 = 182
5.3 단서가 없고 어려운 버그들 = 188
5.4 마지막 방법 = 193
5.5 다시 발생되지 않는 버그들 = 197
5.6 디버깅 도구들 = 199
5.7 다른 사람들의 버그들 = 203
5.8 요약 = 206
6. 테스팅(Testing)
6.1 코드를 작성하는 과정중에 테스트를 수행하라 = 211
6.2 체계적인 테스팅 = 218
6.3 테스트 자동화 = 224
6.4 테스트 기반들 = 228
6.5 스트레스 테스트 = 233
6.6 테스팅을 위한 팁 = 238
6.7 누가 테스팅을 해야 하는가? = 240
6.8 마르코프(Markov) 프로그램 테스팅 = 241
6.9 요약 = 244
7. 성능(Performance)
7.1 병목현상(Bottleneck) = 249
7.2 타이밍(Timing)과 프로파일링(Profiling) = 255
7.3 속도를 위한 전략 = 260
7.4 코드 조정 = 264
7.5 공간 효율성 = 270
7.6 평가 = 273
7.7 요약 = 276
8. 이식성(Portability)
8.1 언어(Language) = 281
8.2 헤더(Headers)와 라이브러리(Libraries) = 289
8.3 프로그램 구성 = 292
8.4 고립(Isolation) = 297
8.5 데이터 교환(Exchange) = 299
8.6 바이트 순서 = 300
8.7 이식성과 업그레이드 = 305
8.8 국제화 = 308
8.9 요약 = 311
9. 표기법(Notation)
9.1 데이터 형식화 = 314
9.2 정규 표현식 = 323
9.3 프로그램 능력이 있는 툴들 = 333
9.4 인터프리터, 컴파일러, 가상 머신 = 337
9.5 프로그램을 쓰는 프로그램 = 344
9.6 코드 생성을 위한 매크로의 사용 = 348
9.7 온 더 플라이(on the fly)컴파일링 = 350
마치면서 = 357
부록 = 361
찾아보기 = 367