Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
C++ ドライバー

貢献ガイドライン

コードを提供する際は、C++ コア ガイドライン に従うだけでなく、 は、同じ 設計ガイドライン に従ってください と のスタイル ガイドライン MongoDB/mongo として 。追加と例外を以下に示します。 ここで明示的に説明されていないすべての部分については、デフォルトで Google C++ スタイルのガイド を参照してください言語形式の 実行 構成ファイル、 mongo-cx-Driver/.clang-形式 で は、コードが上記の標準に準拠していることを確認するのに役立ちます。

プルリクエストが JIRA チケットに対処する場合、単一コミット SR の場合は、件名の前にチケット ID を付けます。 (マルチコミット CR の場合、後でそれをシャットまたはマージするときに ID を追加します。)

CXX-883 Add commit message conventions to CONTRIBUTING.md

件名を大文字にし、末尾にはピリオドを使用しません。 件名は最大で70文字の長さにしてください。 アクティブな言語を使用します。 フレーズが正しくになるようにするには、次のようなプリアンブルをイメージしてください。

If applied, this commit will... [your subject line]

Cisco Bems の Git コミット メッセージの書き込み方法 を 参照 を参照してください。

  • デフォルトまたは引数を持つ 'user' コンストラクター

  • コピーコンストラクターの削除

  • 移動コンストラクターの削除

  • コピー割り当て演算子の宣言または削除

  • 移動割り当て演算子 の宣言または削除

  • Decimal- of-dtor の宣言

パブリック ヘッダーには ".hpp" が必要です 接尾辞。 プライベートヘッダーには ".hh" が必要です 接尾辞。

一般的な構造:

  • ライセンス

  • 保護を含める( #pragma once

  • ヘッダー前例

  • システム ヘッダー<vector> (アルファベット順)

  • ドライバー ヘッダー<path/to/header.hpp> (アルファベット順)

  • 名前空間 mongocx を開きます

  • inline namespace v_noabi {

  • コード

  • } // namespace v_noabi

  • 名前空間 mongocx を閉じる

  • ヘッダーの結果

例:

// 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;
};
  • クラス宣言の外部で を定義する

  • 宣言と定義でインライン キーワードを指定する(明確さのため)

  • 無料の関数を使用することを優先する

戻る

テスト

項目一覧