Du point de vue de la maintenabilité, plutôt que de la syntaxe, il existe au moins trois pistes de réflexion :
-
Déclarez toutes les variables au début de la fonction afin qu'elles se trouvent au même endroit et que vous puissiez voir la liste complète d'un seul coup d'œil.
-
Déclarez toutes les variables aussi près que possible de l'endroit où elles sont utilisées pour la première fois, afin que vous sachiez por qué chacun est nécessaire.
-
Déclarez toutes les variables au début du bloc de portée le plus interne, afin qu'elles sortent de leur portée dès que possible et que le compilateur puisse optimiser la mémoire et vous prévenir si vous les utilisez accidentellement là où vous ne l'aviez pas prévu.
Je préfère généralement la première option, car je trouve que les autres m'obligent souvent à chercher les déclarations dans le code. Définir toutes les variables à l'avance permet également de les initialiser et de les observer plus facilement depuis un débogueur.
Il m'arrive parfois de déclarer des variables à l'intérieur d'un bloc plus petit, mais uniquement pour une bonne raison, dont j'ai très peu. Un exemple pourrait être après un fork()
pour déclarer les variables nécessaires uniquement au processus enfant. Pour moi, cet indicateur visuel est un rappel utile de leur but.
63 votes
Juste une remarque : les variables en C ansi ne doivent pas être déclarées au début d'une fonction mais plutôt au début d'un bloc. Ainsi, char c = ... au début de votre boucle for est tout à fait légal en ansi C. Le char *s, cependant, ne le serait pas.