Files
oki/CONVENTIONS.md
2022-11-16 15:10:10 +01:00

2.4 KiB

Conventions

Note : Ces conventions s'appliquent à la fois à la partie PHP et la partie C++. Les lignes sont indentées avec 4 espaces et le code est écrit en anglais, hors commentaires écrits en français.

Conventions de nommage

Général

Les noms de classes utilisent la notation UpperCamelCase. Les noms de méthodes, d'attribut et de variables sont notées avec la syntaxe lowerCamelCase, excepté ce qui est lié à des colonnes SQL.

Les noms de méthodes doivent de préférence être des phrases verbales comme listPackage ou addVersion. Les noms de booléens devraient être de préférence être des adjectifs comme active, avec la méthode correspondante nommée isActive.

Une variable faisant référence à de multiples éléments (liste, tableau, arbre, graphe...) est nommée au pluriel comme packages pour plusieurs éléments de type Package.

Les noms de tables et de colonnes SQL sont écrites avec la syntaxe snake_case. Les mots-clés SQL sont capitalisés.

Un intitulé de commit commence par une majuscule et un verbe à l'impératif. Il contient éventuellement la portée de la modification :

  • web : relatif à la partie web PHP
  • cli : relatif à la ligne de commande C++
  • ...

Abréviations

La règle générale est d'éviter les abréviations si elles ne sont pas claires comme tout le monde. Des noms complets sont souvent plus simples à lire. Une liste non exhaustive des abréviatives possibles serait :

  • id pour identifier
  • pkg pour package
  • min/max pour minimum/maximum
  • db pour database
  • api pour Application Programming Interface

Convention de style

<?php

declare(strict_types=1);

namespace Model;

class Bird
{
    private int $number;

    private string $name;

    public function __construct(int $number, string $name = 'unknown')
    {
        $this->number = $number;
        $this->name = $name;
    }

    public function getSpeed(): int
    {
        if ($this->number === 55) {
            return 20;
        } else if ($this->name === 'Leonard') {
            return 19;
        }
        return strlen($this->name);
    }
}

clang-format est utilisé pour formater le code source C++.

#pragma once

namespace oki {
    template <typename T>
    class Box {
    private:
        T value;

    public:
        Box(T value);
        const T &peek() const;
    }
}