Menu Docs
Página inicial do Docs
/ / /
Driver C++

Diretivas de contribuição

Nesta página

  • Estilo de código
  • Mensagens de commit
  • Métodos de ciclo de vida
  • Cabeçalhos
  • Declarações de classe
  • Em linha
  • Operadores relacionais

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.

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.

  • 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

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.
#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>

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;
};
  • Definir fora da declaração de classe

  • Especificar palavra-chave in-line na declaração e definição (para maior clareza)

  • Prefira usar funções gratuitas

Voltar

Teste