Conventions de codage#

Idée générale: indentation systématique, pas mal d’espacement horizontal pour aider les étudiants à la lecture, pas trop d’espacement vertical pour voir plus de code à l’écran.

Pour pleins d’exemples, voir la fiche de résumé de syntaxe.

Identifiants et noms de fonctions#

On utilise soit des lettres (n, f…), soit des noms longs, en minuscule, séparé par des _ pour les noms composés (est_palindrome). Pour les fonctions, on utilise un verbe pour les fonctions qui agissent ou changent leurs paramètres (affiche_vecteur, tri_vecteur), et un nom décrivant le résultat pour les fonctions qui calculent (est_palindrome, factorielle).

TODO: en fait on utilise plutôt du CamelCase dans la plupart des sujets. À homogénéiser!

Indentation et blocs#

  • La ligne qui déclare un nouveau bloc finit par l’accolade ouvrante.

  • L’indentation est de quatre espaces (pas de tab!)

  • L’accolade fermante est au même niveau que la première ligne.

  • Chaque bloc imbriqué entraine un décalage plus grand.

  • Sauf espace vertical contraint, ou dans les exercices avancés, on évitera la syntaxe sans accolade même s’il n’y a qu’une seule instruction.

  • Les commentaires sont alignés au même niveau entre les lignes, ou en fin de ligne. Les commentaires ne sont utiles que s’ils apportent une information pertinente en plus de ce que l’on peut lire directement dans le code. Par exemple le commentaire ci-dessous n’est utile que pour des étudiants débutants. Les autres savent bien que i % 2 == 0 teste la parité de i.

Exemple:

do {
    if ( i % 2 == 0 ) {  // Si i est pair
        // Fait xxx
        ...;
    }
} while ( i <= 10 );

Parenthésages et espacements:#

  • Quand on place une accolade/parenthèse ouvrante/fermante on met un espace avant et après.

  • Exception: parenthèses dans les en-tête de fonctions.

  • Chaque opérateur (=, ==, <, <<, *, +, etc.) est entouré d’espaces (sauf « i++ »)

  • Les points-virgules ; sont accolés au texte et suivis d’un espace s’ils ne sont pas en fin de ligne

Exemple:

int factorielle(int n) {
    int resultat = 1;
    for ( int k = 1; k <= n; k++ ) {
        resultat = resultat * k;
    }
    return resultat;
}

Reformatage automatique#

En ligne de commande, vous pouvez utiliser:

astyle \
    --style=java --indent=spaces --indent=spaces=4 --indent-switches --indent-namespaces \
    --indent-modifiers \
    --indent-col1-comments \
    --min-conditional-indent=0 \
    --pad-oper \
    --pad-header \
    --align-pointer=name \
    --align-reference=name \
    --keep-one-line-statements \
    --convert-tabs \
    --close-templates \
    --break-after-logical \
    --max-code-length=78 \
    fichier.cpp

Dans Code::Blocks vous pouvez utiliser:

Plugins -> Source Code Formater (astyle) après avoir réglé la configuration dans Settings -> Editor -> Source Code Formater -> Java.