2. Coding Style

코딩 스타일을 알아보자.

14. Prefer compile- and link-time errors to run-time errors.

빌드 타임에 할 수 있는 것을 런타임으로 미루지 말라. 컴파일 도중에 컴파일러를 통해 확인할 수 있는 불변조건을 쓰는 코드를 써라. 런타임에 체크하는 대신에. 런타임 체크는 제어와 데이터에 달려 있으며, 이는 이 체크가 완전한지를 알 길이 거의 없음을 뜻한다. 반면에, 컴파일 타임 체크는 제어나 데이터에 의존적이지 않고 대개 더 높은 신뢰성을 제공한다.

15. Use const proactively.

const는 당신의 벗이다. 변경되지 않는 값들은 이해하고, 추적하고, 원인을 찾기 쉬우므로, 가능한 한 변수에 대해 상수를 선호하고 값을 정의할 때 const를 기본 설정으로 하라. 이는 안전하고, 컴파일 타임에 체크되고, C++의 타입 시스템과 통합되어 있다. const 부정확한 함수를 호출할 때 말고 const를 뺏는 캐스팅을 하지 말라.

16. Avoid macros.

TO_PUT_IT_BLUNTLY: 매크로는 C와 C++의 추상화 도구의 가장 뭉툭한 도구로, 다루기 힘들고, 당신의 모든 범위에 작용할 것이다. 피하라.

17. Avoid magic numbers.

프로그래밍은 마법이 아니므로 주문을 외지 말라. 42나 3.14159 같은 리터럴 상수를 쓰지 말라. 이는 자가 설명적이지 않고 감지하기 힘든 코드 중복을 추가해 유지 보수를 어렵게 만든다. 의미 있는 이름과 표현식을 써라.

18. Declare variables as locally as possible.

범위 비대화를 피하라. 이는 변수에도 적용된다. 변수는 상태를 포함하고, 당신은 가능하면 가장 적은 상태를 다뤄야 하고, 객체의 주기는 가능한 짧아야 한다. 이는 10번 아이템의 특별한 경우로 다뤄질 가치가 있다.

19. Always initialize variables.

깨끗한 상태로 시작하라. 초기화되지 않은 변수는 C, C++ 프로그램의 흔한 버그 요소이다. 메모리를 쓰기 이전 청소하는 습관을 들여 그런 버그를 피하라. 변수는 정의와 함께 초기화하라.

20. Avoid long functions. Avoid deep nesting.

짧은 것은 긴 것보다 낫고 평평한 것은 깊은 것보다 낫다. 불필요하게 긴 함수와 중첩된 코드는 대개 한 함수에 한 응집된 책임을 주는 데 실패해서 벌어지고, 이는 모두 더 좋은 리팩토링을 통해 해결된다.

21. Avoid initialization dependencies across compilation units.

초기화 순서를 지켜라. 다른 컴파일 단위간 네임스페이스 수준 객체는 절대 서로 초기화 순서에 의존하면 안 된다. 왜냐하면 초기화 순서는 정의되어 있지 않기 때문이다. 그렇지 않는다면 프로젝트에 조그마한 변화를 줄 때마다 불가사의한 크래시가 발생하거나 같은 컴파일러의 새 릴리즈를 썼을 때도 프로젝트가 호환 가능하지 않을 수 있다.

22. Minimize definitional dependencies. Avoid cyclic dependencies.

과의존하지 말라. 전방 선언으로 충족할 때에는 정의부를 #include하지 말라.

상호 의존하지 말라. 두 모듈이 직간접적으로 의존하면 상호 의존성이 발생한다. 모듈은 응집적인 릴리즈 단위로 상호 독립적인 모듈은 별개의 모듈이 아니라 더 큰 모듈의 더 큰 릴리즈 단위로 뭉친 것이다. 즉, 순환 의존성은 모듈화에 역행하는 것이고 큰 프로젝트의 적이다. 피하라.

23. Make header files self-sufficient.

책임감 있게 행동하라. 쓰는 각 헤더가 컴파일 가능한 독립적인 객체로 써라. 그 내용이 의존하는 헤더를 항상 포함함으로써.

24. Always write internal #include guards. Never write external #include guards.

헤더 보호를 쓰라. 의도치 않은 복수 포함을 모든 헤더 파일마다 유일한 #include 보호를 넣어서 막아라.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중