“C++ 핵심 가이드라인의 규칙들을 좀 더 많은 사람이 수월하게 익히게 한다는, 어렵고도 꼭 필요한 작업을 저자가 자신의 교육 기술과 업계 경험을 적용해서 완수했다는 것은 우리 C++ 핵심 가이드라인 편집자들에게 매우 기쁜 소식이다.” - C++ 핵심 가이드라인 공동 편집자 비야네 스트롭스트룹과 허브 서터
C++ 핵심 가이드라인(C++ Core Guidelines)은 뛰어난 현대적 C++ 코드를 작성하기 위한, 그리고 기존 코드를 개선하기 위한 일관된 모범 관행들을 제공한다. 그러나 C++ 핵심 가이드라인은 특정 주제의 규칙을 한 번에 하나씩 찾아보는 데 특화된 형태로 구성되어 있어서 실무 개발자를 위한 튜토리얼로는 적합하지 않다. 《쉽게 설명한 C++ 핵심 가이드라인》은 C++ 핵심 가이드라인에서 과도하게 기술적인 부분을 제거하고 본질적인 내용을 추출해서 집필하여 C++ 핵심 가이드라인을 이해하는 데 도움이 되는 새로운 통찰과 맥락을 저자 자신의 교육 경험에서 검증된 예제들과 함께 제공한다.
이 책은 경험 있는 개발자가 C++11 이후의 현대적 C++ 표준들에 근거해서 코드를 작성할 때 C++ 핵심 가이드라인을 활용하는 데 도움을 준다. 대부분의 예제 코드는 C++17을 기준으로 하되, C++20과 그 이후 표준의 기능을 언급하는 부분도 있다. 또한, 좀 더 자세한 정보를 원하는 독자를 위해 웹에 있는 C++ 핵심 가이드라인 문서의 해당 부분으로 가는 링크도 제시한다.
이 책을 통해 소프트웨어를 새로 작성할 때나 기존의 구식 코드를 개선할 때, C++ 핵심 가이드라인의 가장 유용한 규칙들을 활용해서 좀 더 안전하고, 깔끔하고, 효율적이고, 유지보수하기 쉬운 코드를 작성할 수 있을 것이다.
Contents
1부 지침들
1장 소개
1.1 대상 독자
1.2 목적
1.3 목적이 아닌 것
1.4 규칙의 집행
1.5 구조
1.6 주요 섹션
2장 철학
2.1 4대 기능
2.2 핵심 언어
2.3 표준 라이브러리
2.4 동시성
3장 인터페이스
3.1 비const 전역 변수의 저주
3.2 해결책으로서의 의존성 주입
3.3 좋은 인터페이스 만들기
3.4 관련 규칙들
4장 함수
4.1 함수의 정의
4.2 매개변수 전달: 입력과 출력
4.3 매개변수 전달: 소유권 의미론
4.4 값 반환 의미론
4.5 기타 함수
4.6 관련 규칙
5장 클래스와 클래스 위계구조
5.1 클래스 일반 규칙
5.2 구체 형식
5.3 생성자, 배정, 소멸자
5.4 클래스 위계구조
5.5 중복적재와 중복적재된 연산자
5.6 공용체
5.7 관련 규칙들
6장 열거형
6.1 일반 규칙들
6.2 관련 규칙들
7장 자원 관리
7.1 일반 규칙들
7.2 할당과 해제
7.3 스마트 포인터
7.4 관련 규칙들
8장 표현식과 문장
8.1 일반 규칙들
8.2 선언
8.3 표현식
8.4 문장
8.5 산술
8.6 관련 규칙들
9장 성능
9.1 잘못된 최적화
9.2 잘못된 가정
9.3 최적화의 활성화
9.4 관련 규칙들
10장 동시성
10.1 일반 지침
10.2 동시성
10.3 병렬성
10.4 메시지 전달
10.5 무잠금 프로그래밍
10.6 관련 규칙들
11장 오류 처리
11.1 오류 처리의 설계
11.2 구현
11.3 예외를 던질 수 없으면
11.4 관련 규칙들
12장 상수와 불변성
12.1 const 적용
12.2 constexpr 적용
13장 템플릿과 일반적 프로그래밍
13.1 템플릿의 용도
13.2 템플릿 인터페이스
13.3 템플릿 정의
13.4 템플릿과 위계구조
13.5 가변 인수 템플릿
13.6 메타프로그래밍
13.7 기타 규칙들
13.8 관련 규칙들
14장 C 스타일 프로그래밍
14.1 전체 소스 코드가 있는 경우
14.2 전체 소스 코드가 없는 경우
15장 소스 파일
15.1 인터페이스 파일과 구현 파일
15.2 이름공간
16장 표준 라이브러리
16.1 컨테이너
16.2 문자열
16.3 입력과 출력
16.4 관련 규칙들
부록 A C++ 핵심 가이드라인의 집행
A.1 Visual Studio
A.2 clang-tidy
부록 B 콘셉츠
부록 C 계약
Author
라이너 그림,류광
1999년부터 소프트웨어 아키텍트이자 팀 리더이자 강사로 일하고 있다. 2002년에는 사내 심화 강좌를 개설하고 파이썬과 C++를 강의했다. 2016년부터는 모던 C++와 파이썬에 대한 세미나와 강의를 열고 있다. 여가 시간에는 C++, 파이썬, 하스켈 프로그래밍을 즐기며 컨퍼런스에서 발표하는 것을 좋아한다. 매주 블로그에 글을 올리고 있다. 오라일리에서 독일어로 『C++ Standardbibliothek』, 『C++ fur Programmierer』, 『C++ kurz & gut』 등을 출간했고, 영어로는 『C++20: Get the Details』 등을 출간했다.
1999년부터 소프트웨어 아키텍트이자 팀 리더이자 강사로 일하고 있다. 2002년에는 사내 심화 강좌를 개설하고 파이썬과 C++를 강의했다. 2016년부터는 모던 C++와 파이썬에 대한 세미나와 강의를 열고 있다. 여가 시간에는 C++, 파이썬, 하스켈 프로그래밍을 즐기며 컨퍼런스에서 발표하는 것을 좋아한다. 매주 블로그에 글을 올리고 있다. 오라일리에서 독일어로 『C++ Standardbibliothek』, 『C++ fur Programmierer』, 『C++ kurz & gut』 등을 출간했고, 영어로는 『C++20: Get the Details』 등을 출간했다.