Xavier Lamorlette

Conventions de codage C++

Principes généraux

L'objectif essentiel de mes conventions de codage est de maximiser la lisibilité du code.
Notamment :

J'essaie de rester proche des conventions les plus communes.

La référence et la base sont les C++ Core Guidelines.

Conventions

Casse

Indentation

Espaces

Retours à la ligne

Exemple de code

#include "A.hpp"
#include "B.hpp"

#include <string>

namespace foo {
namespace bar {
class C;

class D: public A {
public:
    D() = default;

private:
    int f;
};

D::D(int a,
        int b):
            A(12),
            f(42), g(12) {
    f += 12;
}

void compute(const D & d,
        int e) {
    int sum = 0;
    for (int i = 0; i < e; i ++) {
        sum += d.do(i);
    }

    long_call_to_a_funtion_with_seveval_parameters(first_parameter,
        second_parameter, third_parameter);

    int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
        + cccccccccccccccccccccccccccccc;

    if (long_condition_filling_the_line()
        || foo()) {
    } else {
    }

    try {
        foo();
    } catch () {
    }

    switch (foo) {
        case 1:
            bar();
            break;
        default:
            baz();
    }

    for (auto v: values) {
    }
}

}
}

Fichier de configuration pour Clang-format dans Visual Studio code

Documentation de référence : Clang-Format Style Options.

Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: DontAlign
AlignOperands: false
AllowShortFunctionsOnASingleLine: None
BinPackParameters: false
BreakBeforeBinaryOperators: All
BreakConstructorInitializers: AfterColon
ColumnLimit: 0
ConstructorInitializerIndentWidth: 12
FixNamespaceComments: false
IndentWidth: 4
IndentCaseLabels: true
PointerAlignment: Middle
SpaceAfterLogicalNot: true
SpaceBeforeCtorInitializerColon: false
SpaceBeforeInheritanceColon: false
SpaceBeforeRangeBasedForLoopColon: false
SpacesBeforeTrailingComments: 2
UseTab: Never

Notez que Clang-format ne permet pas d'avoir :

La dernière mise à jour de cette page date de mai 2020.

Le contenu de ce site est, en tant qu'œuvre originale de l'esprit, protégé par le droit d'auteur.
Pour tout commentaire, vous pouvez m'écrire à xavier.lamorlette@gmail.com.