Docs Menu
Docs Home
/ /

Pautas de contribución

Al contribuir con código, además de seguir las Directrices básicas de C++: siga las mismas directrices de diseño y estilo que mongodb/mongo. A continuación, se enumeran las adiciones y excepciones. Para cualquier aspecto no contemplado explícitamente aquí, consulte la Guía de estilo de C++ de Google. Ejecutar clang-format con nuestro archivo de configuración, mongo-cxx-driver/.clang-format, le ayudará a garantizar que su código cumpla con los estándares mencionados.

Si una solicitud de extracción se dirige a un ticket de JIRA, en el caso de una solicitud de extracción de una sola confirmación, se debe anteponer el ID del ticket al asunto. (En el caso de una solicitud de extracción de varias confirmaciones, añadiremos el ID más adelante al fusionarla).

CXX-883 Add commit message conventions to CONTRIBUTING.md

Utiliza mayúsculas en las líneas de asunto y no coloques un punto al final. Limita el asunto a un máximo de 70 caracteres. ¡Utiliza la voz activa! Imagina este preámbulo para ajustar tu redacción:

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

Consulta Cómo escribir un mensaje de confirmación de Git de Chris Beams para obtener más pautas útiles a seguir.

  • constructores 'usuario' predeterminados o con argumentos

  • declaración o eliminación de constructor de copia

  • declaración-o-eliminación-de-constructor-de-movimiento

  • declaración o eliminación del operador de asignación de copia

  • declaration-or-deletion-of-move-assignment-operator

  • declaración-de-dtor

Los encabezados públicos deben tener un ".hpp" sufijo. Los encabezados privados deben tener un ".hh" sufijo.

Estructura general:

  • Licencia

  • Incluir Guardia (#pragma once)

  • Encabezado de preludio

  • Encabezados del sistema <vector> (orden alfabético)

  • Encabezados del controlador <path/to/header.hpp> (orden alfabético)

  • Espacio de nombres abierto mongocxx

  • inline namespace v_noabi {

  • Código

  • } // namespace v_noabi

  • Cerrar espacio de nombres mongocxx

  • Postludio del encabezado

Ejemplo:

// 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>

Pautas:

  • Línea en blanco al principio y al final de la declaración de clase

  • Sección pública arriba / privada abajo

  • Primero los métodos del ciclo de vida (ver las reglas anteriores)

  • Pedidos de miembros privados

    • Amistades

    • Constructores privados

    • Métodos privados

    • Variables privadas

Ejemplo:

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 fuera de la declaración de clase

  • Especifique la palabra clave en línea en la declaración y la definición (para mayor claridad)

  • Prefiero utilizar funciones gratuitas

Volver

Pruebas

En esta página