1장. 시작하기 전에
코딩 스타일이란 무엇인가
코딩 스타일 교육이 부족하다
코딩 스타일을 익혀야 할 시기
코딩 스타일을 배워야 하는 이유
코딩 스타일은 수학이나 영어보다 더 중요하다
모든 언어에 코딩 스타일이 필요하다
C 언어로 코딩 스타일을 설명하는 이유
코딩 스타일은 컴파일 방식과 하이브리드 방식에 유용하다
컴포넌트 기반 개발 방식과 코딩 스타일
코더의 역량이 중요하다
코딩 관례를 문서화해 두고 통일되게 적용하라
2장. 프로그램 설계 시에 알아야 할 좋은 코딩 습관
최신 표준을 따르라
개발 인원을 적정한 규모로 한정하라
프로그램을 새로 만드는 경우보다 유지보수하는 경우가 많다
프로그램을 쉽게 수정할 수 있다는 생각을 버려라
새로운 기법을 도입할 때는 신중하라
'Run and Fix' 전략을 피하라
3장. 띄어 쓸 때 좋은 코딩 습관
한 줄에 한 문장만 쓰라
선언문과 실행문을 구분하라
단락을 구분하라
제어문들 사이를 구분하라
함수들 사이를 구분하라
연산자의 앞뒤로 빈 칸을 둬라
단항 연산자를 피연산자와 띄어 쓰지 마라
세미콜론 앞에 공백을 두지 마라
탭을 남용하지 마라
특히 쉼표 뒤에 빈 칸을 둬라
쉼표 뒤에 너무 많은 빈 칸을 두지 마라
변수 초기화 시 줄을 맞춰라
한 줄에 변수 한 개만 선언하라
4장. 들여 쓸 때 좋은 코딩 습관
중괄호 위치
중괄호 위치를 통일시켜라
내부 블록을 들여 써라
피제어부를 들여 써라
쓸데없는 들여쓰기를 하지 마라
들여 쓰는 정도를 일정하게 하라
들여 쓰는 깊이를 적당하게 하라
내어쓰기를 하지 마라
5장. 주석을 작성할 때 좋은 코딩 습관
다양한 주석 형태
한 줄 주석과 주석 상자를 구분하라
변수 사전 작성용 주석을 달아라
의사코드를 프로그램에 기입하라
프로그램의 목적을 주석으로 달아라
프로그램의 앞부분에 머리 주석을 반드시 달아라
상등 연산자 옆에 주석을 달아 두자
닫는 중괄호에 주석을 달아라
함수를 충분히 설명하는 주석을 함수 안에 달아라
주석 표기의 원칙
6장. 식별자 이름을 지을 때 좋은 코딩 습관 I
변수 이름을 체계적으로 지어라
헝가리안 표기법으로 변수 이름을 지어라
변수의 자료형을 변수 이름에 접두사로 표기하라
기억 부류를 접두사로 활용하라
함수의 역할을 접두사로 활용하라
자신만의 접두사를 만들어 활용하라
7장. 식별자 이름을 지을 때 좋은 코딩 습관 II
이름을 의미 있게 지어라
비슷한 변수 이름을 사용하지 마라
의미를 잃지 않는 범위에서 짧게 지어라
이름이 길면 밑줄 또는 대소문자로 구분하라
변수 이름을 밑줄로 시작하지 마라
밑줄을 과도하게 사용하지 마라
대소문자를 적절히 배합해 식별자 이름을 지어라
대소문자 구분을 악용하지 마라 I
대소문자 구분을 악용하지 마라 II
클래스 이름과 변수 이름을 같게 하지 마라
변수 이름 중 강조할 부분을 대문자로 처리하라
8장. 연산자를 사용할 때 좋은 코딩 습관
조건 연산자도 때로는 가독성을 높인다
연산자의 우선순위에 의존하는 식을 만들지 마라
포인터 연산자를 변수 이름에 붙여서 써라
시프트 연산을 지양하고 산술 연산을 하라
극단적으로 효율성을 추구하지 마라
9장. 명료한 프로그램을 만드는 좋은 코딩 습관
약삭빠른 코드 대신에 명료하고 이해하기 쉬운 프로그램을 작성하라
while 문에서 관계/대입 연산자의 우선순위를 혼동하지 마라
암시적인 'non zero test'를 하지 마라
조건식에 대입문을 사용하지 마라
부작용이 나타나지 않도록 주의하라
함수 원형에도 인수 자료형을 표기하라
가인수에도 이름을 기입하라
반환 자료형을 반드시 표기하라
결과값에 주의하라
for 문 등의 조건에서 연산하는 일을 지양하자
잉여 괄호를 아낌없이 사용하라
else 문에 중괄호를 사용했으면 if 문에도 쓰라
함수의 끝에 반드시 return 문을 적어 둬라
10장. 이식하기 쉬운 프로그램을 만드는 좋은 코딩 습관
파일 이름의 길이를 14자로 제한하라
파일 이름에 특수 문자를 사용하지 마라
조건부 컴파일을 활용해 이식성을 높여라
컴파일러의 한계를 인식하라
자료형의 크기가 달라질 수 있다는 점을 고려하라
절대 경로를 지정하지 마라
이식성과 효율성 중 어느 한쪽을 선택하라
포인터 대신 배열을 사용해 이식성을 높여라
가독성을 고려해 이식성이 좋은 언어를 선택하라
저수준 언어로 작성한 코드를 끼워 넣지 마라
11장. 정밀한 프로그램을 만드는 좋은 코딩 습관
컴퓨터는 생각보다 정밀하지 않다
정밀한 계산이 필요하다면 부동소수점 연산을 피하라
정밀한 계산에는 float형보다 double형을 사용하라
정수형의 크기를 확인하라
계산 단위를 반드시 명시하라
나눗셈 연산에는 주의를 기울여라
자료형의 변환이 이루어지지 않도록 하라
확실하게 문법을 익혀 둬라
계산 결과가 선형으로 나오지 않을 수 있다는 점에 주목하라
12장. 성능 향상을 위한 좋은 코딩 습관
성능이 중요하다면 출력을 자제하라
연산을 단순한 형태로 바꿔라
효율성이 요구되는 큰 파일을 다룰 때는 바이너리 파일을 사용하라
팩키드 구조체와 언팩키드 구조체의 장단점을 인식하고 사용하라
실행 환경을 고려해 언어를 선택하라
상황에 맞는 수단을 선택하라
더 나은 자료 구조를 선택하라
13장. 이해하기 쉬운 프로그램을 만드는 좋은 코딩 습관
goto 문을 사용하지 마라
C의 구성 요소를 치환하지 마라
긴 자료형 이름을 짧게 바꿔 사용하라
3항 연산자보다는 if 문을 사용하라
배열의 차원을 3차원으로 한정하라
구동 함수인 main 함수의 역할을 생각하라
상수를 기호 상수나 const 형태의 상수로 대체해 사용하라
변수 선언부를 배치할 때 순서를 고려하라
될 수 있으면 전역 변수를 사용하지 마라
KISS 원칙을 지켜라
14장. 사용자 인터페이스를 처리할 때 좋은 코딩 습관
입력값을 저장할 변수의 크기를 충분히 확보하라
변환 지정자와 매개변수의 개수를 일치시켜라
scanf() 함수보다는 fgets()와 sscanf() 함수를 사용하라
fflush() 함수를 사용해 표준 입출력 장치의 버퍼를 비워라
15장. 오류 없는 프로그램을 만드는 좋은 코딩 습관
배열의 첨자는 0부터 시작한다는 것을 잊지 마라
치환 문자열을 반드시 괄호로 씌워라
파일을 열었다면 반드시 닫아 둬라
컴파일러의 경고(warning error)를 무시하지 마라
런타임 오류를 인식하고, 그것이 발생하지 않도록 코드를 작성하라
배열이 큰 경우에는 정적 변수로 선언하라
기억 공간을 충분한 크기로 정해 둬라
메시지 교환에 의한 창발 효과에 주의하라
16장. 생산성 향상을 위한 좋은 코딩 습관
상충 관계 중 어느 쪽을 추구할지를 미리 정해 둬라
신중하게 최신 도구를 적용하라
표준 라이브러리 정도는 모두 외워라
코드 블록을 최대한 쪼개라
용어를 명확히 구분하라
구조체, 열거체, 공용체 용어를 명확히 하라
개념을 명확히 구분하라
객체, 클래스, 인스턴스를 확실히 구분하라
부록
참고할 만한 웹 페이지와 검색 방법
주요 참고 문헌
후기I: 소프트웨어 '출판'이라는 관점에서 바라보기
후기II: 코더를 지나 프로그래머로