wiki:coding_style

Coding style de Fl-Air

Formatage

Le formatage choisit est celui du projet LLVM. Il a l'avantage d'être applicable automatiquement par l'outil clang-format. Le framework flair contient le script flair_format_dir qui applique automatiquement le style LLVM à tous les fichiers h et cpp d'un répertoire. Les sources de flair doivent être formatées par ce script avant d'être publiées.

Positions relatives des const, & et *

La lecture se fait de droite à gauche par rapport à l'étoile (ou l'esperluette). Au sein de chacun des blocs situé à gauche et à droite, le choix suivant est décidé

int *plop;  // pointeur sur entier
int *const plop;  // pointeur constant sur entier
const int *plop;  // pointeur sur un entier constant
const int *const plop;  // pointeur constant sur un entier constant

L'étoile ou l'esperluette est collée au nom de la variable ou de la méthode

int &toto;
int &Toto();

Nommage des attributs, des méthodes et des classes

Les noms d'attributs commencent par une minuscule. Les noms de méthodes et de classes commencent par une majuscule. Les noms longs, composés de plusieurs noms concaténés, sont en camelCase.

Les abréviations sont évitées dans les noms.

Exemple: monBeauEtSympathiqueAttribut est préféré à monBeauSympaAttr (c'est le boulot de l'IDE de faire la complétion et le reformatage)

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

Exemple d'un constructeur

void Toto(int attribut);//declaration
void Toto(int inAttribut):attribut(inAttribut) {//implementation
}

Pas de référence sur des types simples

Ecrire

float ComputeCustomThrust(void);

plutôt que

void ComputeCustomThrust(float &torques);

Paramètres en entrée ou en sortie

Toto(const Plop *plop) // pointeur sur un Plop constant, donc paramètre en entrée
Toto(Plop *plop)  // pointeur sur un Plop, donc paramètre en sortie

Geteurs et Seteurs

Set

void SetQuaternion(const Quaternion &inQuaternion);

Get

1 seul des 2 get suivants:

const Quaternion &GetQuaternion(void) const;//si pas mutex, retour reference const pour ne pas servir en setQuaternion 
Quaternion GetQuaternion(void) const;//si mutex

cas particulier, retour de plusieurs valeurs de façon consistante (1 mutex pour récupérer les 2 types):

void GetQuaternionAndAngularRate(Quaternion &outQuaternion,Vector3D &outAngularRate) const;

Conversions

Définir les 2 suivants:

void ToEuler(Euler &euler) const;
Euler ToEuler(void) const;

NB: l'implémentation du second est simple:

Euler ToEuler(void) const {
    Euler euler;
    ToEuler(euler);
    return euler;
}
Last modified 3 years ago Last modified on Jul 29, 2016, 11:29:02 AM