로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

C++ 코딩의 정석 : 101가지 규칙, 가이드라인, 좋은 습관들

   
지은이 HERB SUTTER   |   출판사 정보문화사  |   발행일 2005년 04월 11일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 16,000원14,400원 10%
마일리지 5% 800원
발행일 2005-04-11
ISBN 8956742553 | 9788956742557
기타정보 번역서 | 341쪽
예상출고일
배송비 2,000원 (20,000원이상 무료배송)
   
프로그래밍언어
종합지수 16p 123 위
   
이 책의 원서
  C++ Coding Standards: Rules, Guidelines, and Best Practices
Addison-Wesley Professional | Herb Sutter
 

「C++ 코딩의 정석: 101가지 규칙, 가이드라인, 좋은 습관들」. 이 책은 C++ 프로그래밍에 있어서 이해하고 지켜나가야 할 내용들을 101가지로 세분화하여 엮은 것이다. 각각의 가이드라인들은 구체적이고 상세하다기보다는 핵심적인 내용 중심으로 정리되어 있다. 각 규칙에 대한 설명과 예, 그리고 예외 상황과 참고 문헌의 순서로 나열하였다.
구성과 관리에 관한 이슈들
0. 작은 것에 연연하지 말라
1. 사소한 경고 메시지라도 무시하지 말라
2. 자동화된 빌드 시스템을 사용하라
3. 버전 컨트롤 시스템을 사용하라
4. 코드 리뷰에 시간을 투자하라

디자인 스타일
5. 하나의 엔티티에는 하나의 역할만을 부여하자
6. 정확성, 간결성, 명확성을 먼저 생각하라
7. 적절한 규모 유지를 위해서는 '언제, 어떻게'를 아는 것이 중요하다
8. 이른 최적화를 피하라
9. 미리 최적화해두어야 할 부분도 있다
10. 전역 데이터와 공유 데이터를 최소화하라
11. 정보를 숨겨라
12. 안전한 공유를 위한 코딩의 시기와 방식을 결정하라
13. 자원은 개체가 가지게끔 하라. RAII와 스마트 포인터를 활용하라

코딩 스타일
14. 런타임 오류보다는 컴파일이나 링크 타임 오류가 낫다
15. const를 사용하라
16. 매크로 사용을 자제하라
17. 마법의 숫자는 쓰지 말라
18. 가능하면 로컬 변수를 선언하여 사용하라
19. 변수는 항상 초기화하여 사용하라
20. 너무 긴 함수와 많은 중첩 구조는 피하라
21. 컴파일 단위 사이의 초기화 의존성을 없애라
22. 정의의 의존성과 순환 의존성을 최소화하라
23. 헤더 파일은 충분히 완성된 형태로 만들어라
24. 내부 #include 가드를 사용하라. 외부 #include 가드를 써서는 안 된다

함수와 연산자
25. 값, (스마트) 포인터, 참조 중 적절한 방식으로 인자를 얻어라
26. 오버로딩된 연산자의 본래 의미를 유지하라
27. 표준적인 형식의 산술 및 할당 연산자를 사용하라
28. ++와 --의 표준적인 형식과 접두 형식을 사용하라
29. 간접적인 타입 변환을 피하기 위해 오버로딩을 활용하라
30. &&, || 그리고 콤마의 오버로딩은 피하라
31. 함수 인자의 처리 순서에 좌우되는 코드는 좋지 않다

클래스 디자인과 상속성
32. 만들고 있는 클래스가 무엇인지 확실히 하라
33. 최소화된 클래스를 사용하라
34. 상속성은 주의해서 사용하라
35. 기반 클래스로 디자인되지 않은 클래스로부터의 상속을 피하라
36. 추상 인터페이스를 활용하라
37. 상속의 정확한 의미를 이해하자. 재사용을 위해 상속하는 것은 아니지만, 재사용은 필요하다
38. 안전한 오버라이딩을 연습하라
39. 가상 함수는 비공용으로, 공용 함수는 비가상으로 설정하라
40. 간접 변환을 피하라
41. 특징 없는 값의 집합(C 스타일의 struct)을 제외하고는 모든 데이터 멤버를 사영으로 유지하라
42. 내부의 것은 너무 노출시키지 말라
43. Pimpl을 적절히 활용하라
44. 비멤버 함수를 활용하라
45. new와 delete는 항상 함께 제공하라
46. 특정한 클래스에 맞는 new를 제공한다면 모든 표준 형식을 제공해야 한다

생성과 파괴 그리고 복사
47. 멤버 변수의 정의와 선언은 같은 순서로 하라
48. 컨스트럭터 내에서 할당 대신 초기화를 사용하라
49. 컨스트럭터와 디스트럭터에서는 가상 함수의 호출을 피하라
50. 기반 클래스 디스트럭터는 공용과 가상 또는 보호와 비가상으로 만들어라
51. 디스트럭터, 재할당 그리고 swap은 절대 실패하지 않는다
52. 일관된 방식으로 복사하고 제거하라
53. 복사의 허용 여부는 명확하게 지정하라
54. 개체의 조각화를 피하라. 기반 클래스 내에서의 복사보다는 Clone을 활용하라
55. 정규형의 할당 방식을 사용하라
56. 필요하다면 실패가 없는 swap을 활용하라

네임스페이스와 모듈
57. 타입과 그의 비멤버 함수는 같은 네임스페이스 내에 넣어라
58. 특별히 함께 작동하게끔 의도된 경우가 아니라면 타입과 함수는 분리된 네임스페이스에 넣어라
59. 헤더 파일 내에 또는 #include 앞에 네임스페이스 using을 써서는 안 된다
60. 서로 다른 모듈에서의 메모리 할당과 해지는 피하라
61. 헤더 파일 내에는 서로 연결된 엔티티를 정의해서는 안 된다
62. 예외가 모듈의 경계를 넘어 전달되는 것을 막아라
63. 모듈의 인터페이스 내에는 충분한 이식성을 갖춘 타입을 사용하라

템플릿과 일반성
64. 정적, 동적인 다형성을 적절히 혼합하라
65. 계획적이고 직접적으로 커스텀화하라
66. 함수 템플릿은 특화해서는 안 된다
67. 계획적이지 않고 일반적이지 않은 코드는 작성하지 말라

오류와 예외의 처리
68. 내부적인 가정과 규칙을 확실하게 명시하라
69. 합리적인 오류 처리 방식을 수립하고, 엄격히 그 방식을 따르라
70. 어디까지가 오류인지 명확히 해두자
71. 오류로부터 안전한 코드를 디자인하고 작성하라
72. 오류 보고에는 예외를 활용하라
73. 예외를 발생시킬 때에는 값으로 하고, 잡아낼 때에는 참조로 하라
74. 목적에 맞게 오류를 보고하고, 제어하고, 변환하라
75. 예외 명세표는 만들 필요가 없다

STL : 컨테이너
76. 표준적으로 vector를 사용하고, 그렇지 않다면 적절한 컨테이너를 선택하라
77. 배열 대신 vector와 string을 사용하라
78. C++ API가 아닌 다른 것들과의 데이터 교환을 위해서는 vector(그리고 string::c_str)를 사용하라
79. 컨테이너에는 값과 스마트 포인터만을 저장하라
80. 요소의 추가에는 push_back을 활용하라
81. 추가 작업에 있어 범위를 지정한 방식을 활용하라
82. 용량의 축소와 요소의 제거에 있어 적절한 방법을 사용하라

STL : 알고리즘
83. 검증된 STL 임플리먼테이션을 사용하라
84. 직접 작성한 루프보다는 알고리즘을 활용하라
85. 적절한 STL 검색 알고리즘을 사용하라
86. 적절한 STL 정렬 알고리즘을 사용하라
87. 술어를 순수한 함수로 만들어라
88. 알고리즘과 비교 인자에는 함수보다 함수 개체를 사용하라
89. 올바른 함수 개체를 만들자

타입 안전
90. 타입의 변환을 피하고, 다형성을 활용하라
91. 표현 방식이 아닌 타입에 의존하라
92. reinterpret_cast 사용을 자제하라
93. 포인터에 대한 static_cast 사용은 피하라
94. const는 캐스팅하지 말자
95. C 스타일의 캐스팅은 사용하지 말라
96. POD가 아닌 데이터를 memcpy 또는 memcmp하지 말라
97. union 사용을 주의하라
98. 가변 인자의 사용을 피하라
99. 올바르지 않은 개체와 안전하지 않은 함수는 사용하지 말라
100. 배열을 다형적으로 다루어서는 안 된다

참고 목록

핵심 요약

찾아보기
Herb Sutter는 세 권의 시리즈 서적인 [Exceptional C++ Style], [Exceptional C++ : C++ 프로그래머를 자극하는 47개의 재미있는 퍼즐 문제], [More Exceptional C++]의 저자이며, ISO C++ 표준 위원회의 일원이자 C/C++ 유저 저널의 컬럼리스트이기도 하다. 또한 마이크로소프트의 소프트웨어 설계사로서 C++ 언어를 .NET 버전으로 확장하는 프로젝트에 참가하고 있다.

Andrei Alexandrescu는 [제네릭 프로그래밍과 디자인 패턴을 적용한 Modern C++ Design ]의 저자이자, C/C++ 유저 저널의 컬럼리스트이다.



[역자의 말]

프로그래머로 일하는 역자의 친구와 이런저런 얘기를 나누다가 자신의 개발팀에서 하는 일들과 팀원들에 대한 대화를 나눈 적이 있다. 프로젝트 마스터가 정해놓은 규칙 때문에 골치가 아프다는 내용이 주를 이루었는데, 많은 팀원들이 그 규칙이 효율적이지 못하다고 지적했지만 받아들여지지 않았고, 심지어는 팀을 떠난 사람도 있다고 했다. 변수의 이름은 항상 한글로 할 것, 특별한 경우가 아니면 모든 변수의 범위를 전역(global)으로 설정할 것 등이 대표적인 규칙이었고, 그 얘기를 들으면서 역자가 만약 그 팀의 일원이었더라도 꽤나 골치가 아프지 않았을까 하는 생각이 들었다.

프로그래밍을 함에 있어서 어떠한 기준을 바탕으로 삼아야 할까? 코딩 환경이 다양하고 프로젝트의 종류 또한 다양하겠지만 기본적인 가이드라인들은 반드시 존재하고, 특별한 이유가 없는 한 그 가이드라인을 따르는 것이 여러모로 이득이 된다. 코딩의 표준 방식은 그만큼 많은 사람들이 많은 시간과 노력을 통해 경험하고 발전시킨 것이며, 효율적이고 안전함이 입증된 것이기 때문이다.

이 책은 C++ 프로그래밍에 있어서 여러분이 이해하고 지켜나가야 할 내용들을 101가지로 세분화하여 엮은 것이다. 각각의 가이드라인들은 구체적이고 상세하다기보다는 핵심적인 내용 중심으로 정리되어 있으며, 각 규칙에 대한 설명과 예, 그리고 예외 상황과 참고 문헌의 순서로 나열되어 있다.

아마도 이 책은 C++ 프로그래밍에 익숙한 전문가일수록 더 유용하게 읽혀질 것이라 생각한다. 당연하게 여겨지지만 그 이유는 정확히 설명하지 못하던 표준적인 코딩 방식, 잘 알지 못했기 때문에 잘못 해왔던 그동안의 방식, 알면서도 그 중요성을 깨닫지 못해 잘 지키지 못했던 여러 표준들에 대한 명확한 해답을 이 책에서 제시하고 있기 때문이다.

문체나 구성의 특성상 이 책은 C++ 프로그래밍의 설명서나 레퍼런스라기보다는 철학서에 가깝다. 단어 선택이나 문장 구성에 있어서도 그러한 특성이 그대로 반영되어 있어, 역자가 그동안 경험한 원서 중 가장 번역이 힘들었던 책이기도 하다. 때문에 최대한 독자들이 쉽게 읽을 수 있게끔 풀어쓰려 노력했고, 이해에 도움이 안 되는 부분들은 생략했으며, 필요에 따라 조금씩 부연설명을 추가하였다.
여러분이 좋은 프로그래머가 되고자 한다면 역자의 친구가 속해있는 팀의 프로젝트 마스터와 같이 프로그램 전체의 질을 떨어뜨리는 그런 엉뚱한 규칙은 만들지도 말고, 따르지도 말자. 그 이유와 방법은 이 책에 담겨있다.
기대가 너무 컸던 걸까??
최영수님이 쓰신 서평보기 I 평점 I 조회수(1142) I 공감 (0) I 블로그
이제 막 문법 떼고첫 프로젝트를 진행하고 있는 지금..닥치는대로 이것저것 보고 있는데혹 했던 책이 이거였는데....... Code Complete만큼이나 기대이하였던.....목차만 봐도 도움이 될 것 같긴하다..
C++ 프로그래머 필독서의 목록에 올라야 할 책.
김성훈님이 쓰신 서평보기 I 평점 I 조회수(1832) I 공감 (0) I 블로그
C++을 익히는 데에 주로 사용되는 대부분의 책들은, 문법에 치중되어 있다. 심지어 The C++ Programming Language 마저 그렇다. 객체 지향 프로그래밍을 위한 언어인 C++이라고 해도, 입문서에서 마저, 객체 지향 적인 노하우를 구구절절 설명한다면, 입문자들이 기겁을 하며 떠나갈 가능성이 농후할 것이기 때문인가보다.우선 이 책 역시 서점에서 검토해보고 주문한 책이 아니었다. 이 책을 고르며 생각한 이 책의 방향성은 좋은 코딩 좋은 습관 (http://kangcom.com/common/bookinf...
코딩 룰을 갈쳐주는 책이 아님
김성재님이 쓰신 서평보기 I 평점 I 조회수(978) I 공감 (0) I 블로그
전 그런줄 알았는데 아니더군요 ㅋ 모든 내용을 담고 있다고 해도 과언이 아닙니다. 다만 설명이 부실하기 때문에 다른책을 봐야 합니다 이 책을 볼때 목차 부터 보세요 목차에서 제목을 보고 알고 있는거다 싶으면 넘어가고 모르겠다 싶으면 그 페이지를 보세요 이해가 안되면 다른책을 보세요 ㅜㅜ 솔직히 번역은 좀 그렇죠...
원서는 좋지만 번역이 영
김영중님이 쓰신 서평보기 I 평점 I 조회수(1098) I 공감 (0) I 블로그
확실히 좋은 책입니다. 원서는 별5개를 줘도 안 아까울정도 하지만 번역이 -_- 번역에 좀 더 신경을 써주셨으면 합니다. 그리고 원서에 있는 내용중에 의역한 부분도 별루고.. 빼먹은 부분도 많고...진짜 책 보면서 영어 공부를 많이 해야겠다라는 생각을 들게 해준 책입니다....원서 볼려고
프로그래밍의 좋은 습관을 가지기 위한 지침서
신영진님이 쓰신 서평보기 I 평점 I 조회수(1738) I 공감 (0) I 블로그
이 책은 C++ 프로그램을 작성할때에 고려해야 할 101가지 사항에 관해서 다루고 있다. 처음에 목차를 쭈욱 훑어보다 100번에서 보는 것을 보고는 잠시 당황했었다. 왜 101가지지? 하는 생각을 2.3초간 했는데 돌아와 보니 목차가 0번에서 시작하고 있었다. 저자의 센스가 느껴지는 부분이었다.101가지 모두 주옥같은 규칙들이라 뺄 것이 없을 것 처럼 느껴졌다. 단지 몇 가지 규칙들은 설명이 다소 추상적이라 몇 년간 개발을 해본 사람이라면 충분히 공감할 만 하지만, 이제 막 C++ 문...
배보다 배꼽이 큰 책
석대진님이 쓰신 서평보기 I 평점 I 조회수(1415) I 공감 (0) I 블로그
C++ 코딩 스타일 총정리...
이은조님이 쓰신 서평보기 I 평점 I 조회수(2553) I 공감 (0) I 블로그
이 책은 간단히 말하자면 그 동안 허브 슈터가 exceptional 시리즈와 같은 저서나 컬럼을 통해 꾸준히 주장하고 제시해 왔던 안전하고 표준에 맞는 C++ 코딩 기법들에 대한 총체적인 요약서라 할 수 있습니다.요약서이기에 exceptional 시리즈와 같은 친절하고 상세한 예제나 설명은 없지만 전반적인 코딩 기법이나 클래스 디자인 방법들에 대해서 다른 어떤 책들보다도 많은 것들을 언급하고 있기 때문에 시간 날 때마다 하나씩 읽어 가면서 자신의 소스를 전반적으로 검토하는데 있어...
SQL 전문가 가이드 [The Guide for SQL Professional](2013 Edition)...
한국데이터베이스진흥원
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
파이썬으로 데이터 주무르기...
민형기
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
C++ 프로그래밍...
윤성우
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(69)
회원평점   회원서평수 7
기대가 너무 컸던 걸까??
최영수 님  2009-08-18
C++ 프로그래머 필독서의 목록에 올라야 할 책.
김성훈 님  2008-12-20
코딩 룰을 갈쳐주는 책이 아님
김성재 님  2007-01-22
원서는 좋지만 번역이 영
김영중 님  2006-12-14
프로그래밍의 좋은 습관을 가지기 위한 지침서
신영진 님  2006-07-25
배보다 배꼽이 큰 책
석대진 님  2005-06-06
C++ 코딩 스타일 총정리...
이은조 님  2005-06-01
Andrei Alexandrescu 의 최근 저서
 
Programming in D: Tutorial and Reference
47,000원
(16%↓+1%)
 
Programming in D: Tutorial and Reference
41,700원
(16%↓+1%)
 
D 프로그래밍언어
32,010원
(3%↓+1%)
 
The D Programming Language
60,200원
(14%↓+1%)
 
Herb Sutter 의 최근 저서
 
C++ Coding Standards: Rules, Guidelines, and Best Practices
65,500원
(22%↓+1%)
 
정보문화사 출판사의 신간
나도 SNS 할 수 있다!카카오톡+밴드+유튜브+인스타그램(큰글씨 도서)
김로사(로사쌤) 저
16,200원
(10%↓+5%)
 
드론 제작 노트 : Drone 실무자들의 현장 기법
양정환 저
13,500원
(10%↓+5%)
 
하마터면 글로벌셀러 할 뻔했다
방선영, 황성환 저
13,500원
(10%↓+5%)
 
프론트엔드 개발 첫걸음 : React, Angular, Vue.js, React Native
하라 카즈히로 저
16,200원
(10%↓+5%)
 
모든 것이 연결된 세상 IT 레볼루션
김국현 저
14,400원
(10%↓+5%)
 
이메일주소수집거부