star-style

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

commit 04d1db5775be43d8db3f1920cf22eec0eb3f68be
parent fe872fb962c94a81756c07ba33fb719f78994cfc
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu,  2 Jul 2026 15:20:06 +0200

Ajoute la section sur les fonctions

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

diff --git a/doc/fr/star-c.7 b/doc/fr/star-c.7 @@ -1036,6 +1036,93 @@ FOO__(qux, 4); .Ed .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh LES FONCTIONS +S'attacher à ce que chaque fonction reste simple et concise, en ne +s'appliquant à ne lui faire faire qu'une seule chose. +Ce faisant, le corps d'une fonction devrait être lisible sur un ou deux +écran, avec comme référence la taille des terminaux telle que +démocratisée à la fin des années 1970, à savoir 24 lignes. +.Pp +Un indice quant à la taille qu'une fonction devrait s'efforcer à avoir +est donné par ses niveaux d'indentation. +Plus elle compte de niveaux et plus elle devrait être ramassée. +De même, un nombre de variables locales supérieur à dix peut être le +signe d'une fonction trop dense. +.Pp +Écrire les directives qui contrôlent la portée d'une fonction et son +type de retour, sur une ligne séparée de son nom. +L'expression régulière +.Ql ^nom_de_fonction +peut ainsi être utilisée pour la recherche d'une fonction dans les +différents fichiers sources. +.Pp +Pour une déclaration, revenir à la ligne avant d'ouvrir la parenthèse de +la fonction, précédée d'une identation par rapport au nom de la fonction +sur la ligne qui précède. +Puis lister les arguments de la fonction, en revenant à la ligne après +chacun d'eux et en les alignant les uns par rapport aux autres. +Ajouter la parenthèse fermante +.Ql \&) +et le point virgule +.Ql \&; +sur la ligne du dernier argument, sans espace supplémentaire : +.Bd -literal -offset Ds +extern LOCAL_SYM void +foo_bar + (struct foo* foo, + const int qux, + const float xyzzy); +.Ed +.Pp +Les différentes parties qui composent le profil de la fonction sont +ainsi identifiables par la seule mise en page de sa déclaration. +.Pp +Lors de sa définition, lister les arguments de la fonction sur la même +ligne. +Si la liste des arguments dépasse la longueur maximale d'une ligne +.Pq section Sx LA LONGUEUR DES LIGNES +lister les arguments comme pour une déclaration : +.Bd -literal -offset Ds +void +foo_bar(struct foo* foo, const int qux, const float xyzzy) +{ + ... +} +.Ed +.Pp +Ordonner les arguments d'une fonction comme suit : +.Bl -enum -compact +.It +pour une fonction d'interface, la variable sur laquelle la fonction +opère ; +.It +les données d'entrées ; +.It +les données en sortie. +.El +.Pp +Ajouter l'instruction +.Ql const +aux variables qui n'ont pas vocation à être modifiées par la fonction. +Et ce quand bien même leur modification n'aurait aucune conséquence, +comme pour les variables de données simples, copiées à l'appel de la +fonction. +L'objet étant d'expliciter quelles sont les variables d'entrée de la +fonction. +.Bd -literal -offset Ds +static void +foo + (struct foo* f, + const int longueur, + const int* liste, + int* resultat); + +static INLINE double +madd(const double a, const double b, const double c) +{ + return a*b + c; +} +.Ed +.\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .Sh LES VARIABLES .Sh LES CONSTANTES SYMBOLIQUES .Sh LES STRUCTURES