コード スタイル
コードを提供する際は、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. 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; };
インライン
クラス宣言の外部で を定義する
宣言と定義でインライン キーワードを指定する(明確さのため)
関係演算子
無料の関数を使用することを優先する