2024년도에는 진짜 마지막 구글 C++ 스타일 가이드 포스팅을 해낸다.
배경 (Background)
C++은 구글의 여러 오픈 소스 프로젝트에서 주요 개발 언어로 사용되고 있다. C++을 사용하는 개발자라면 알다시피, 이 언어는 강력한 기능을 제공하지만 그만큼 복잡성을 동반하며, 코드가 버그에 취약해지고 읽기 어려워지거나 유지보수가 까다로워질 수 있다.
이 가이드는 C++ 코드를 작성할 때 지켜야 할 사항과 피해야 할 사항을 상세히 설명함으로써 이러한 복잡성을 관리하고자 한다. 이러한 규칙들은 개발자가 C++ 언어의 기능을 생산적으로 활용하면서도 코드베이스를 관리 가능하게 유지하는 데 그 목적이 있다.
스타일 또는 가독성이라 불리는 규칙은 단순한 소스 파일 형식 이상의 관습을 포함하는데, 이는 코드 작성 방식에 대한 전반적인 규범을 의미한다. 대부분의 구글 오픈 소스 프로젝트가 이 가이드의 요구사항을 따르고 있다.
이 가이드는 C++ 언어 튜토리얼이 아니며, 독자가 C++에 대한 기본적인 이해를 갖추고 있다는 전제를 바탕으로 작성되었다.
구글 C++ 스타일 가이드 목표 (Goals of the Style Guide)
이 문서는 구글의 C++ 코드 작성에 필요한 주요 원칙을 다루며, 각 규칙의 목표와 그 이유를 설명한다. 가이드의 핵심 목표는 다음과 같다.
- 스타일 규칙의 가치
- 각 스타일 규칙은 엔지니어들이 기억해야 할 가치가 충분해야 한다. 유해한 관행을 막기 위해 설정된 규칙이라도 실질적인 위험이 낮다면 굳이 다룰 필요가 없다는 원칙에 따라, 가이드에 포함된 규칙은 반드시 필요한 것만 남긴다.
- 작성자보다 독자를 위한 최적화
- 코드 작성보다 읽기, 유지보수, 디버깅이 더 많이 이루어지기 때문에, 평균적인 엔지니어가 코드베이스를 쉽게 이해할 수 있도록 최적화하는 것을 우선한다. 예를 들어, 포인터 소유권의 이전처럼 예상치 못한 일이 발생할 때는 명확한 힌트를 남기는 것이 중요하다.
- 기존 코드와의 일관성
- 하나의 스타일을 일관되게 사용함으로써 도구의 자동화를 용이하게 하고 불필요한 논쟁을 줄인다. 새로운 스타일이 적용될 수 있지만, 일관성의 원칙은 기존 스타일을 무조건 따르기보다는 코드베이스가 점진적으로 새로운 스타일로 발전하도록 한다.
- C++ 커뮤니티와의 일관성
- 다른 조직이 사용하는 C++ 스타일과의 일관성은 코드 가독성과 협업 측면에서 도움이 된다. 다만, 표준 기능이 구글의 코드베이스에 부적합하거나 더 나은 외부 라이브러리가 있다면 표준 기능의 사용을 제한하거나 대체할 수 있다.
- 예상 밖이거나 위험한 구조 피하기
- 일부 C++ 기능은 처음 보는 사람에게 혼란을 줄 수 있다. 이런 기능들은 프로그램의 정확성을 해칠 가능성이 높아 규칙 면제에 대한 기준이 높다.
- 복잡한 구조는 신중하게 사용
- 코드 소유권과 팀이 변할 수 있기 때문에, 모두가 이해하기 어려운 복잡한 구조를 사용하는 것은 지양한다. 많은 사람이 사용하는 코드라면 복잡한 구조가 허용될 수 있지만, 프로젝트 리더의 승인을 받아야 한다.
- 대규모 코드베이스를 고려한 작성
- 1억 줄이 넘는 코드와 수천 명의 엔지니어가 작업하는 환경에서 전역 네임스페이스 오염을 방지해야 한다. 이는 큰 규모의 코드베이스에서 네임스페이스 충돌을 막는 데 필수적이다.
- 필요 시 최적화를 허용
- 성능 최적화가 필요할 때는 다른 원칙과 충돌하더라도 이를 허용할 수 있다.
이 문서는 합리적 제한 내에서 최대한의 지침을 제공하며, 일반적인 판단과 통상적인 관습을 우선시한다.
참조URL
https://google.github.io/styleguide/cppguide.html
728x90
'기술 노트 > Google C++ Style Guide' 카테고리의 다른 글
Google C++ Style Guide(2024) - 4장 클래스 (Classes) (2) | 2024.11.07 |
---|---|
Google C++ Style Guide(2024) - 3장 스코핑 (Scoping) (0) | 2024.11.06 |
Google C++ Style Guide(2024) - 2장 헤더 파일 (Header File) (0) | 2024.11.05 |
Google C++ Style Guide(2024) - 1장 C++ 버전 (C++ Version) (0) | 2024.11.04 |
헤더 파일부터 코드 스타일까지: Google C++ Style Guide 적용기 (2021) (1) | 2021.07.06 |