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:
| M | doc/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