star-style

Writing conventions for co-authors
Log | Files | Refs | README | LICENSE

commit a4536aba9011b7b58efa676c09c9fa700bc695d6
parent c2531bdd925007313fa2b40d3b695b791a9a3ff2
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 26 Jun 2026 14:56:32 +0200

Ajoute la section sur les mots clés

Diffstat:
Mdoc/fr/star-c.7 | 124++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 113 insertions(+), 11 deletions(-)

diff --git a/doc/fr/star-c.7 b/doc/fr/star-c.7 @@ -322,11 +322,11 @@ indenter chaque .Ql case ainsi que leur contenu : .Bd -literal -offset Ds -switch(opt) { +switch (opt) { case 'e': errno = 0; epsilon = strtod(optarg, NULL); - if(errno != 0) err = 1; + if (errno != 0) err = 1; break; case 'h': printf("usage: foo [-hov]\en"); @@ -347,7 +347,7 @@ Motiver l'utilisation de plusieurs instructions par ligne par l'expressivité du code en résultant, qu'une écriture resserrée viendrait renforcer : .Bd -literal -offset Ds -if(x == NULL || y == NULL) { err = 1; goto error; } +if (x == NULL || y == NULL) { err = 1; goto error; } x[0] = 1.0; x[1] = 0.0; y[0] = 0.0; y[1] = 1.0; .Ed @@ -653,7 +653,7 @@ en séparant par un espace la fin de la directive et le caractère .Ql { qui marque l'ouverture du bloc : .Bd -literal -offset Ds -if(foo) { +if (foo) { bar(); qux(); } @@ -684,7 +684,7 @@ Aligner la fermeture du bloc à l'indentation de sa directive, ou, dans le cas de directives qui se suivent, de l'indentation de la première directive à l'origine des blocs successifs : .Bd -literal -offset Ds -if(foo) { +if (foo) { bar(); } else { qux(); @@ -696,22 +696,124 @@ contrôle que si la clarté du code n'en est pas impactée. Dans ce cas, l'ouverture et la fermeture du bloc associé se fait sur une seule et même ligne : .Bd -literal -offset Ds -if(foo) { bar(); return 0; } +if (foo) { bar(); return 0; } .Ed .Pp Ne pas utiliser d'accolades si la structure de contrôle n'est suivie d'aucune ou d'une seule directive écrite sur la même ligne : .Bd -literal -offset Ds -while(foo()); +while (foo()); -if(bar) return 0; +if (bar) return 0; +.Ed +.\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.Sh LES MOTS CLÉS +Ajouter un espace après chaque structure de contrôle +.Ql if , +.Ql switch , +.Ql for +et +.Ql while +pour les différencier des appels de fonctions. +Ne pas ajouter d'espace après l'ouverture et avant la fermeture des +parenthèses qui détourent leur(s) expression(s) : +.Bd -literal -offset Ds +if (i < 10) { + foo(i); +} +.Ed +.Pp +Ajouter un espace après chaque point virgule qui sépare les expressions +d'une boucle +.Ql for +sauf si l'expression qui suit est vide : +.Bd -literal -offset Ds +for (i=0; i<10; foo(i++)); -if(qux) { - return 1; +for (;;) { /* Boucle infinie */ + poll(); + if(bar) break; +} +.Ed +.Pp +Assimiler l'instruction +.Ql sizeof +à une fonction ; ne pas insérer d'espace entre le mot clé et son +expression entourée de parenthèses : +.Bd -literal -offset Ds +sz = sizeof(int); +.Ed +.\"""""""""""""""""""""""""""""""""" +.Ss L'instruction Ql switch +Limiter à quelques lignes le contenu de chaque +.Ql case +d'une instruction +.Ql switch , +celle-ci devant donner à lire la seule répartition des traitements, +fonction de la valeur que peut prendre l'expression du +.Ql switch . +Et non les traitements eux même, sauf s'ils sont triviaux. +Un +.Ql case +au contenu trop fourni est alors le signe d'un manque de structure dans +l'écriture du programme. +.Pp +Toujours ajouter une instruction +.Ql default +même si l'ensemble des valeurs que pourraient prendre l'expression du +.Ql switch +est censé être couvert par les différents +.Ql case . +C'est notamment le cas quand l'expression est une variables de type +.Vt enum . +Utiliser alors la directive +.Sy FATAL , +définie par la bibliothèque RSys +.Pq en-tête In rsys/rsys.h , +pour signifier un comportement inattendu. +Et ainsi pouvoir diagnostiquer une erreur dans la valeur de l'expression +du +.Ql switch , +ou un +.Ql case +manquant : +.Bd -literal -offset Ds +switch (i) { + case FOO: foo(); break; + case BAR: bar(); break; + case QUX: qux = 1; break; + default: FATAL("Unreachable code\en"); break; +} +.Ed +.Pp +Ajouter la directive +.Sy FALLTHROUGH , +définie dans le fichier d'en-tête +.In rsys/rsys.h +de la bibliothèque RSys, +en fin des instructions +.Ql case +qui s'enchaînent. +L'ajout de cette directive permet d'expliciter que c'est bien le +comportement attendu et non l'oublie d'une instruction +.Ql break , +en plus d'éviter un possible message d'avertissement à la compilation +.Pq option Fl Wimplicit-fallthrought No de Xr gcc 1 Ns + : +.Bd -literal -offset Ds +switch (c) { + case 'a': + foo = 1; + FALLTHROUGH; + case 'b': + bar = 1; + break; + default: + usage(); + break; } .Ed .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -.Sh LES MOTS CLÉS .Sh LE NOMMAGE .Sh LES FONCTIONS .Sh LES VARIABLES