기술 노트/Google C++ Style Guide

Google C++ Style Guide(2024) - 배경 (Background)

anothel 2024. 11. 3. 22:48

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