Programmation/Structure et style

Un livre de Wikilivres.
Aller à : navigation, rechercher

La structure et le style d'un code source définissent sa présentation. Afin que la maintenance soit facile, il est nécessaire que la présentation du code soit cohérente dans tous les fichiers sources. Des règles de styles sont donc à définir.

Langue[modifier | modifier le wikicode]

Les vieux langages ayant du mal à gérer les accents, des habitudes ont été prises pour nommer les variables et écrire les commentaires sans accents. Cela a également aidé la langue anglaise à s'imposer.

Toutefois, cette limite technique n'existe plus dans les langages modernes. Il est possible de nommer des variables en français avec des accents.

La langue utilisée dans les commentaires et dans la conception est donc d'un choix de développement.

Style du code[modifier | modifier le wikicode]

Les caractères blancs (espaces, tabulations, retours à la ligne) sont généralement ignorés par la plupart des langages de programmation, et ne servent qu'à séparer deux mots dans les instructions. Ces caractères permettent donc de présenter le code de façon plus lisible que si les instructions s'enchaînaient sans espaces.

Exemple en C: Sans coloration syntaxique, quel code est le plus lisible ?

int main(void){printf("Bonjour monde !");return 0;}

ou

int main ( void )
{
    printf( "Bonjour monde !" );
    return 0;
}

?

Il est possible de définir ses propres règles de style, ou d'utiliser des règles de styles standard afin que la cohérence de présentation dépasse le cadre de son projet personnel.

L'indentation[modifier | modifier le wikicode]

L'indentation définit l'espace blanc situé au début de chaque ligne de code. Les lignes de code sont rassemblées en blocs (fonctions, résultat d'un test, ...) et sont ordonnées de manière hiérarchique (bloc conditionnel dans une fonction, fonction dans une classe, classe dans un espace de nom, ...).

À chaque nouveau niveau hiérarchique plus profond, l'indentation augmente.

Exemple (dans un pseudo-langage) :

namespace mynamespace {    // <- début espace de nom
    function myfunction {  // <- début fonction
        if (condition) {   // <- début if
            instruction;   // <- instruction conditionnelle
        }                  // <- fin if
    }                      // <- fin fonction
}                          // <- fin espace de nom

L'exemple précédent utilise 4 caractères espaces supplémentaire à chaque nouveau début de bloc hiérarchique. Le nombre de caractère espaces peut varier selon le style, il et même possible d'utiliser des caractères tabulations au lieu des espaces.

Utiliser des caractères tabulation au lieu des espaces présente certains avantages :

  • Beaucoup de logiciels d'édition ou présentation permettent de définir le nombre d'espace à afficher pour chaque tabulation, ce qui permet à chacun d'adapter la présentation du code.

et certains inconvénients :

  • Beaucoup de logiciels ne permettent par de définir le nombre d'espace à afficher pour chaque tabulation qui est fixé (souvent 8, voire 4).

Les caractères de tabulation donc souvent à proscrire. Il est préférable d'utiliser le bon nombre de caractères espace à chaque nouvelle indentation :

  • 1 ou 2 est souvent insuffisant pour distinguer les différents niveaux,
  • 4 est généralement correct,
  • 8 est largement trop grand, spécialement quand on limite la longueur des lignes de code (souvent 79 caractères maximum), la limite diminue alors rapidement à chaque nouveau niveau.

La règle d'or est de toujours utiliser le même style d'indentation (cohérence de présentation).

Le style K&R[modifier | modifier le wikicode]

Le style K&R est nommé d'après Kernighan et Ritchie qui ont utilisé ce style dans leur livre Le langage de programmation C (The C Programming Language en version originale).

Ce style définit les règles suivantes :

  • Chaque nouvelle accolade s'ouvre sur la même ligne que l'instruction de contrôle,
  • L'indentation du contenu du bloc est augmenté,
  • L'accolade fermante se situe au même niveau que l'instruction de l'accolade ouvrante.

Exemple:

int main(void) {
    printf( "Bonjour monde !" );
    return 0;
}

Cependant, si la fonction utilise des arguments dont les types sont définis après, l'accolade ouvrante est sur une ligne à part :

int main(argc, argv)
int argc;
char**argv;
{
    printf( "Bonjour monde !" );
    return 0;
}

Le style Allman[modifier | modifier le wikicode]

Nommé d'après son auteur Eric Allman, ce style est essentiellement le même que K&R, excepté que chaque accolade ouvrante est située sur une ligne séparée.

Exemple:

int main(void)
{
    printf( "Bonjour monde !" );
    return 0;
}

La déclaration de la fonction, l'accolade ouvrante et l'accolade fermante sont 3 lignes séparées et possèdent le même niveau d'indentation.

Le style Whitesmiths[modifier | modifier le wikicode]

Moins commun que les précédents, ce style indente les accolades au même niveau que le bloc qu'il contient.

Exemple:

int main(void)
    {
    printf( "Bonjour monde !" );
    return 0;
    }

Le style GNU[modifier | modifier le wikicode]

Ce style est intermédiaire entre le style Allman et le style Whitesmiths : les accolades sont semi-indentées.

Exemple:

int main(void)
  {
    printf( "Bonjour monde !" );
    return 0;
  }