Contents
Code Complete 목차
1부: 기초 확립
- 1장: 소프트웨어 구현으로의 초대
- 1.1 소프트웨어 구현이란 무엇인가?
- 1.2 소프트웨어 구현이 중요한 이유는 무엇인가?
- 1.3 이 책을 읽는 방법
- 2장: 소프트웨어 개발의 이해를 돕기 위한 비유
- 2.1 비유의 중요성
- 2.2 소프트웨어 비유 사용법
- 2.3 일반적인 소프트웨어 비유
- 3장: 준비는 철저하게: 선행 조건
- 3.1 선행 조건의 중요성
- 3.2 작업 중인 소프트웨어의 종류 결정
- 3.3 문제-정의 선행 조건
- 3.4 요구사항 선행 조건
- 3.5 아키텍처 선행 조건
- 3.6 선행 조건에 소요되는 시간
- 4장: 구현 시 결정해야 할 핵심 사항
- 4.1 프로그래밍 언어 선택
- 4.2 프로그래밍 규약
- 4.3 기술 흐름 파악
- 4.4 구현 실천법 선택
2부: 고품질 코드 작성
- 5장: 구현 설계
- 5.1 설계의 어려움
- 5.2 핵심 설계 개념
- 5.3 설계 빌딩 블록: 발견적 학습
- 5.4 설계 실천법
- 5.5 잘 알려진 방법론에 대한 의견
- 6장: 클래스 다루기
- 6.1 클래스의 토대: 추상 데이터형(ADT)
- 6.2 좋은 클래스 인터페이스
- 6.3 설계와 구현 문제
- 6.4 클래스를 작성하는 이유
- 6.5 프로그래밍 언어와 관련된 이슈
- 6.6 클래스를 넘어서: 패키지
- 7장: 고급 루틴
- 7.1 루틴을 작성하는 이유
- 7.2 루틴 수준의 설계
- 7.3 좋은 루틴 이름
- 7.4 루틴의 길이에 대한 문제
- 7.5 루틴 매개변수 처리
- 7.6 함수를 사용할 때 특별히 고려해야 할 사항
- 7.7 매크로 루틴과 인라인 루틴
- 8장: 방어적인 프로그래밍
- 8.1 잘못된 입력으로부터 프로그램 보호
- 8.2 어설션
- 8.3 오류 처리 기법
- 8.4 예외
- 8.5 오류로 인한 손상을 막기 위한 방책
- 8.6 디버깅 보조 도구
- 8.7 제품 코드를 얼마나 방어적으로 프로그래밍할 것인지 정하기
- 8.8 방어적인 프로그래밍에 대해서 한 번 더 고민하기
- 9장: 의사코드 프로그래밍 프로세스
- 9.1 클래스 및 루틴 개발 단계 요약
- 9.2 전문가를 위한 의사코드
- 9.3 PPP를 이용한 루틴 구현
- 9.4 PPP 대안
3부: 변수
- 10장: 변수 사용 시 고려할 사항
- 10.1 데이터 활용 능력
- 10.2 변수 선언을 쉽게 만들기
- 10.3 변수 초기화 지침
- 10.4 범위
- 10.5 지속성
- 10.6 바인딩 시점
- 10.7 데이터형과 제어 구조 사이의 관계
- 10.8 각 변수를 정확히 한 가지 목적으로 사용
- 11장: 변수 이름의 기능
- 11.1 좋은 이름을 선택하기 위한 고려 사항
- 11.2 특정 데이터형 이름 짓기
- 11.3 이름 규약의 효과
- 11.4 비형식적인 이름 규약
- 11.5 표준 접두사
- 11.6 읽기 쉬운 짧은 이름
- 11.7 피해야 할 변수 이름
- 12장: 기본 데이터형
- 12.1 숫자 일반
- 12.2 정수
- 12.3 부동소수점 숫자
- 12.4 문자와 문자열
- 12.5 불린 변수
- 12.6 열거형
- 12.7 이름 상수
- 12.8 배열
- 12.9 자신만의 형 만들기 (형 별칭)
- 13장: 특이한 데이터형
- 13.1 구조체
- 13.2 포인터
- 13.3 전역 데이터
4부: 명령문
- 14장: 순차적 코드 구성하기
- 14.1 순서가 중요한 명령문
- 14.2 순서가 중요하지 않은 명령문
- 15장: 조건문 사용
- 15.1 if 문
- 15.2 case 문
- 16장: 반복문 제어
- 16.1 반복문의 종류 선택
- 16.2 반복문 제어
- 16.3 반복문을 쉽게 작성하는 방법 — 안에서 밖으로
- 16.4 반복문과 배열의 관계
- 17장: 특이한 제어 구조
- 18장: 테이블 활용 기법
- 19장: 제어와 관련된 일반적인 이슈
5부: 코드 향상
- 20장: 소프트웨어 품질
- 21장: 협력 구현
- 22장: 개발자 테스트
- 23장: 디버깅
- 24장: 리팩터링
- 25장: 코드 튜닝 전략
- 26장: 코드 튜닝 기법
6부: 시스템 고려 사항
- 27장: 프로그램의 크기가 구현에 미치는 영향
- 28장: 구현 관리
- 29장: 통합
- 30장: 프로그래밍 도구
7부: 소프트웨어 장인정신
- 31장: 레이아웃과 스타일
- 32장: 스스로를 설명하는 코드
- 33장: 개발자의 성격
- 34장: 소프트웨어 장인정신에 대한 주제
- 35장: 더 많은 정보를 얻으려면