C++ 도우미
C++ 개발 시에 도움을 준다.
Build & Development Commands
- 모든 소스 코드는 CMake를 사용하여 빌드합니다: cmake -B build -S . && cmake --build build
- 디버그 빌드: cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug && cmake --build build
- 릴리스 빌드: cmake -B build -S . -DCMAKE_BUILD_TYPE=Release && cmake --build build
- 코드 변경 시 가능한 한 증분 빌드를 활용하세요: cmake --build build
- 빌드 캐시 지우기: rm -rf build/
- 정적 분석 실행: cppcheck --enable=all --std=c++17 --suppress=missingIncludeSystem ./src/
- 소스 코드 포맷팅: clang-format -i src/.cpp include/.h
Testing Guidelines
- 모든 새로운 기능에는 단위 테스트를 작성해야 합니다
- Google Test 프레임워크를 사용하여 테스트를 작성하세요
- 테스트 실행: cd build && ctest -V
- BDD 스타일로 테스트를 작성하세요: Given-When-Then 패턴
- 에지 케이스, 경계값, 예외 상황을 포함한 포괄적인 테스트를 작성하세요
- 코드 커버리지 분석: gcov와 lcov를 사용하여 테스트 커버리지를 측정하세요
- 메모리 누수 감지를 위해 Valgrind 도구를 활용하세요: valgrind --leak-check=full ./build/tests
Code Style & Guidelines
- Google C++ 스타일 가이드를 따르세요 (https://google.github.io/styleguide/cppguide.html)
- 들여쓰기는 공백 4칸을 사용하세요
- 클래스/함수/변수에 명확하고 설명적인 이름을 사용하세요
- 모든 클래스, 함수, 메소드에 doxygen 스타일 주석을 추가하세요
- 헤더 가드에는 #pragma once를 사용하세요
- 가능한 한 STL 컨테이너와 알고리즘을 활용하세요
- 원시 포인터 대신 스마트 포인터(std::unique_ptr, std::shared_ptr)를 사용하세요
- C++20 표준을 준수하고 최신 C++ 기능을 적절히 활용하세요
- 런타임 타입 정보(RTTI)와 예외는 꼭 필요한 경우에만 사용하세요
- 콘스트 정확성(const correctness)을 유지하세요
- 모든 클래스는 Rule of Five를 준수해야 합니다 (소멸자, 복사 생성자, 복사 대입 연산자, 이동 생성자, 이동 대입 연산자)
- 순환 종속성은 피하고 깔끔한 계층적 구조를 유지하세요
- 전역 변수 사용을 최소화하고 가능한 한 클래스 내에 상태를 캡슐화하세요
Documentation Guidelines
- 모든 공개 API에 대해 명확한 Doxygen 스타일 문서를 작성하세요
- 함수 설명, 매개변수, 반환 값, 예외를 문서화하세요
- 복잡한 알고리즘이나 비즈니스 로직에는 설명적인 주석을 추가하세요
- 프로젝트 루트에 README.md 파일을 유지하고 설치, 빌드, 사용법 지침을 포함하세요
- 아키텍처 결정이나 디자인 패턴을 설명하는 별도의 설계 문서를 유지하세요
- 모든 공개 API에 대한 사용 예제를 제공하세요
- 빌드 요구 사항, 외부 종속성, 지원되는 플랫폼을 명확하게 문서화하세요
- 버전 관리를 위해 시맨틱 버저닝(Semantic Versioning)을 사용하세요
- 중요한 변경 사항을 추적하기 위해 CHANGELOG.md 파일을 유지하세요
- 컨트리뷰션 가이드라인을 CONTRIBUTING.md 파일에 기록하세요