기여 가이드라인
코드 스타일
코드를 기여할 때 C++ 핵심 가이드라인 을 준수하는 것 외에도 , 동일한 디자인 가이드라인을 따르세요. 및 스타일 가이드라인 as mongodb/mongo. 추가 사항 및 예외 사항은 아래에 나열되어 있습니다. 여기에서 명시적으로 다루지 않은 내용은 기본적으로 Google C++ 스타일 가이드 를 참조하세요. . clang-format 실행 구성 파일인 mongo-cxx-driver/.clang-format을 사용하여 는 코드가 위의 표준을 준수하는지 확인하는 데 도움이 됩니다.
커밋 메시지
풀 요청이 JIRA 티켓을 처리하는 경우, 단일 커밋 PR의 경우 제목 줄 앞에 티켓 ID를 붙입니다. (멀티 커밋 PR의 경우 나중에 스쿼시 또는 병합할 때 ID를 추가합니다.)
CXX-883 Add commit message conventions to CONTRIBUTING.md
제목 줄을 대문자로 지정하고 뒤에 마침표를 사용하지 마세요. 제목을 최대 70 자 길이로 유지합니다. 능동태를 사용하세요! 올바른 표현을 위해 이 서문을 상상해 보세요.
If applied, this commit will... [your subject line]
자세한 내용은 Chris Beams 의git commit 메시지 작성 방법을 참조하세요. 를 참조하세요.
수명 주기 메서드
기본값 또는 인수를 포함하는 '사용자' 생성자
선언 또는 복사 생성자
선언 또는 이동 삭제 생성자
선언 또는 복사-할당-연산자
선언 또는 이동 삭제 연산자
dtor 선언
헤더
공개 헤더에는 '.hpp' 접미사. 비공개 헤더에는 '. 접미사.
일반 구조:
라이선스
가드 포함(
#pragma once
)헤더 서곡
시스템 헤더
<vector>
(알파벳순)드라이버 헤더
<path/to/header.hpp>
(알파벳순)네임스페이스 mongocxx 열기
inline namespace v_noabi {
코드
} // namespace v_noabi
네임스페이스 mongocxx 닫기
헤더 포스트루드
예시:
// Copyright 2018-present MongoDB Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. namespace mongocxx { inline namespace v_noabi { // Declarations // Inline Implementations } // namespace v_noabi } // namespace mongocxx
클래스 선언
지침:
클래스 선언의 시작과 끝에 빈 줄
공개 섹션을 위로 / 비공개를 아래로
수명 주기 메서드 먼저(위의 규칙 참조)
비공개 회원 주문
친구 관계
비공개 생성자
비공개 메서드
비공개 변수
예시:
class foo { public: foo(); foo(foo&& other) noexcept; foo& operator=(foo&& other) noexcept; ~foo(); private: friend baz; class MONGOCXX_PRIVATE impl; std::unique_ptr<impl> _impl; };
인라인
클래스 선언 외부에서 정의
선언 및 정의에 인라인 키워드 지정(명확성을 위해)
관계 연산자
무료 기능 사용 선호