문서 메뉴
문서 홈
/ / /
C++ 드라이버

기여 가이드라인

이 페이지의 내용

  • 코드 스타일
  • 커밋 메시지
  • 수명 주기 메서드
  • 헤더
  • 클래스 선언
  • 인라인
  • 관계 연산자

코드를 기여할 때 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.
#pragma once
#include <driver/config/prelude.hpp>
#include <vector>
#include <driver/blah.hpp>
namespace mongocxx {
inline namespace v_noabi {
// Declarations
// Inline Implementations
} // namespace v_noabi
} // namespace mongocxx
#include <driver/config/postlude.hpp>

지침:

  • 클래스 선언의 시작과 끝에 빈 줄

  • 공개 섹션을 위로 / 비공개를 아래로

  • 수명 주기 메서드 먼저(위의 규칙 참조)

  • 비공개 회원 주문

    • 친구 관계

    • 비공개 생성자

    • 비공개 메서드

    • 비공개 변수

예시:

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;
};
  • 클래스 선언 외부에서 정의

  • 선언 및 정의에 인라인 키워드 지정(명확성을 위해)

  • 무료 기능 사용 선호

돌아가기

테스트

다음

도움말 얻기