Diretivas de contribuição
Nesta página
Estilo de código
Ao contribuir com código, além de seguir as C++ diretrizes principais do, siga as mesmas diretrizes de design e diretrizes de estilo como MongoDB/mongo. As adições e exceções estão listadas abaixo. Para qualquer coisa que não seja explicitamente abordada aqui, use como padrão o Guia de estilo do Google C++. Executando o formato clang com nosso arquivo de configuração, mongo-cxx-driver/.clang-format, ajudarão a garantir que seu código esteja em conformidade com os padrões acima.
Mensagens de commit
Se uma solicitação pull endereçar um ticket JIRA, para um PR de confirmação única, prefixe a linha de assunto com o ID do ticket. (Para um PR de várias confirmações, adicionaremos o ID mais tarde quando o compactarmos ou mesclarmos.)
CXX-883 Add commit message conventions to CONTRIBUTING.md
Use maiúsculas nas linhas de assunto e não use um ponto final no final. Mantenha o assunto com no máximo 70 caracteres. Use a voz ativa! Imagine este preâmbulo para obter seu fraseado correto:
If applied, this commit will... [your subject line]
Veja Como escrever uma mensagem de commit no git de Singles para obter mais diretrizes recomendadas a seguir.
Métodos de ciclo de vida
construtores de 'usuário' padrão ou argumentado
declaração ou exclusão do construtor de cópias
declaração ou exclusão do construtor de movimento
declaração ou exclusão do operador de cópia de segurança
declaração-or-deletion-of-move-assignment-operator
declaração de dtor
Cabeçalhos
Os cabeçalhos públicos devem ter um ".hpp" sufixo. Cabeçalhos privados devem ter um ".hh" sufixo.
Estrutura geral:
Licença
Incluir proteção (
#pragma once
)Prelude do Header
Cabeçalhos do sistema
<vector>
(ordem alfabética)Cabeçalhos de driver
<path/to/header.hpp>
(ordem alfabética)Abra o Namespace mongocxx
inline namespace v_noabi {
Código
} // namespace v_noabi
Fechar Namespace mongocxx
Cabeçalho Postlude
Exemplo:
// 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
Declarações de classe
Diretivas:
Linha em branco no início e fim da declaração de classe
Seção pública em cima / privada em baixo
Métodos de ciclo de vida primeiro (veja as regras acima)
Ordenação de membros privados
Amizades
Construtores privados
Métodos privados
Variáveis privadas
Exemplo:
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; };
Em linha
Definir fora da declaração de classe
Especificar palavra-chave in-line na declaração e definição (para maior clareza)
Operadores relacionais
Prefira usar funções gratuitas