Changes between Initial Version and Version 1 of coding_style


Ignore:
Timestamp:
Jul 29, 2016, 11:29:02 AM (8 years ago)
Author:
Sanahuja Guillaume
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • coding_style

    v1 v1  
     1= Coding style de Fl-Air =
     2
     3== Formatage ==
     4Le formatage choisit est celui du projet LLVM.
     5Il a l'avantage d'être applicable automatiquement par l'outil clang-format.
     6Le framework flair contient le script flair_format_dir qui applique automatiquement le style LLVM à tous les fichiers h et cpp d'un répertoire.
     7Les sources de flair doivent être formatées par ce script avant d'être publiées.
     8
     9== Positions relatives des const, & et * ==
     10La lecture se fait de droite à gauche par rapport à l'étoile (ou l'esperluette).
     11Au sein de chacun des blocs situé à gauche et à droite, le choix suivant est décidé
     12{{{#!cpp
     13int *plop;  // pointeur sur entier
     14int *const plop;  // pointeur constant sur entier
     15const int *plop;  // pointeur sur un entier constant
     16const int *const plop;  // pointeur constant sur un entier constant
     17}}}
     18
     19L'étoile ou l'esperluette est collée au nom de la variable ou de la méthode
     20{{{#!cpp
     21int &toto;
     22int &Toto();
     23}}}
     24
     25== Nommage des attributs, des méthodes et des classes ==
     26Les noms d'attributs commencent par une minuscule.
     27Les noms de méthodes et de classes commencent par une majuscule.
     28Les noms longs, composés de plusieurs noms concaténés, sont en camelCase.
     29
     30Les abréviations sont évitées dans les noms.
     31
     32Exemple: monBeauEtSympathiqueAttribut est préféré à monBeauSympaAttr (c'est le boulot de l'IDE de faire la complétion et le reformatage)
     33
     34Quand il y a conflit entre le nom d'un paramètre et le nom d'un attribut (constructeur, setteur...), on préfixe le nom du paramètre par in ou out ou inOut. Ceci uniquement pour l'implémentation de la méthode.
     35
     36Exemple d'un constructeur
     37{{{#!cpp
     38void Toto(int attribut);//declaration
     39void Toto(int inAttribut):attribut(inAttribut) {//implementation
     40}
     41}}}
     42
     43== Pas de référence sur des types simples ==
     44
     45Ecrire
     46{{{#!cpp
     47float ComputeCustomThrust(void);
     48}}}
     49plutôt que
     50{{{#!cpp
     51void ComputeCustomThrust(float &torques);
     52}}}
     53
     54== Paramètres en entrée ou en sortie ==
     55{{{#!cpp
     56Toto(const Plop *plop) // pointeur sur un Plop constant, donc paramètre en entrée
     57Toto(Plop *plop)  // pointeur sur un Plop, donc paramètre en sortie
     58}}}
     59
     60==
     61
     62== Geteurs et Seteurs ==
     63
     64=== Set ===
     65
     66{{{#!cpp
     67void SetQuaternion(const Quaternion &inQuaternion);
     68}}}
     69
     70=== Get ===
     71
     721 seul des 2 get suivants:
     73{{{#!cpp
     74const Quaternion &GetQuaternion(void) const;//si pas mutex, retour reference const pour ne pas servir en setQuaternion
     75Quaternion GetQuaternion(void) const;//si mutex
     76}}}
     77
     78cas particulier, retour de plusieurs valeurs de façon consistante (1 mutex pour récupérer les 2 types):
     79{{{#!cpp
     80void GetQuaternionAndAngularRate(Quaternion &outQuaternion,Vector3D &outAngularRate) const;
     81}}}
     82
     83== Conversions ==
     84
     85Définir les 2 suivants:
     86{{{#!cpp
     87void ToEuler(Euler &euler) const;
     88Euler ToEuler(void) const;
     89}}}
     90
     91__NB__: l'implémentation du second est simple:
     92{{{#!cpp
     93Euler ToEuler(void) const {
     94    Euler euler;
     95    ToEuler(euler);
     96    return euler;
     97}
     98}}}