Blog pour un amateur du system embarqué.

Construire un quadrirotor avec Raspberry Pi (3)

| raspberry_pi linux drone astyle

Pourquoi faut-il avoir un certain style de programmation ?

Quand on fait de la programmation, on doit collaborer avec au moins deux personnes: soi-même auparavant et soi-même à l’avenir.

Le sentiment du programmeur : je ne comprends plus mon propre code après une absence de guère un mois ! Donc on imagine bien la vie compliquée de tout collaborateur futur éventuel, dans le récyclage, la modification ou l’amélioration de votre code.

Pour faire face à ce problème, il est efficace de définer certaines règles et spécifications de codage, afin d’aider à lire et comprendre le code source, ce qui facilite la communication entre les programmeurs et réduit le nombre de bugs. Avec un style de programmation “sain”, on peut assurer la qualité du code et aussi limiter sa complexité et taille.

Je réfère au style de programmation de ZEROMQ, C Language Style for Scalability, dans mon projet de quadrirotor. Toutefois, seulement le style. Comme je n’appuie pas sur les bibliothèques de ZEROMQ, les spécifications correspondantes ne sont pas obligatoires pour moi.

Obligatoire : Licence, README, … etc.

Avec github, c’est très facile.

Quand on crée un repository en github, on peut rédiger README et choisir la licence (normalement on utilise GPL v3 pour les projets de logiciel libre).

Ce projet de drone est nommé “RTPiDrone”, ayant du préfixe “RPD”.

Il faut ajouter trois dossiers : “include” pour tous les fichiers entêtes, “src” pour les fichier source, et “scripts” pour les shell-script nécessaires. Dans le dossieur “include” il y a un fichier entête publique “RTPiDrone.h”.

Pas de Makefile, car je veux utiliser cmake.

Outil pour bien contrôler le format de code : astyle

Artistic Style est un outil qui peut formatter, embellir, et ajuster l’indentation le code source de C, C ++, C ++ / CLI, Objective-C, C# et Java langages de programmation. Il est un programme de console qui reçoit l’information de ligne de commande, comme ça:

astyle  [OPTIONS]  SourceFile1  SourceFile2  SourceFile3  [ . . . ]

Dans [OPTION] on peut mettre plus qu’une option. Par exemple, pour formatter un fichier:

astyle  --style=allman  /home/user/project/foo.cpp

Pour plusiers fichiers:

astyle  --style=allman --recursive  /home/user/project/*.cpp  /home/user/project/*.h

Pour ce projet j’utilise les options -A3 -s4 (Kernighan & Ritchie style et 4 spaces pas indent), bien que ça ne corresponde pas au style de code de ZEROMQ. Mais il correspond à mon propre style. Le résultat est ainsi comme ça.

int Foo(bool isBar)
{
    if (isBar) {
        bar();
        return 1;
    } else
        return 0;
}