
Envoyé par
Philou67430
Je ne suis pas d'accord avec cette règle : lorsque c'est possible (C++, car en C, ce n'est pas toujours possible), je préconiserais plutôt de déclarer les variables au plus près de leur utilisation, et ce pour plusieurs raisons :
- éviter les effets de bord en limitant au maximum la portée d'une variable
- pour rendre "lisible" cette déclaration lorsque l'on lit le code qui l'utilise (notamment pour voir son type et sa valeur initiale).
Si c'est dans une boucle simple, et exclusivement pour son indice, éventuellement. Sinon, c'est un beau nid à bugs introuvables, notamment et surtout par masquage d'une variable existante...
Sinon, pour un code propre :
- Commenter intelligemment : un commentaire qui décrit le code, ça ne sert à rien, on n'est pas idiots et on sait lire du code... L'exemple de Philou67430 est très significatif.
- Indenter de façon régulière : respecter une indentation constante dans le projet, et non pas un coup avec 2 espaces, un coup sans, un coup une tabulation, etc...
- Quelle que soit la norme de codage que tu appliques, suis-la SANS EXCEPTIONS.
- Modulariser son code, mais éviter les dépendances façon "poulpe plein de tentacules". Si chaque fonction que tu implémentes dépends de dizaines d'autres fonctions plus ou moins interdépendantes, tu vas créer un code tentaculaire difficile à maintenir et à comprendre.
- Éviter les lignes vides "pour rien", tout comme les fonctions trop longues ou les blocs inutilement éclatés.
Exemple :
1 2 3 4 5 6 7 8
| if (condition)
{
variable = valeur1 ;
}
else
{
variable = valeur2 ;
} |
Ceci est très laid, ça prends une place infernale à l'écran, et ça nuit plus à la lisibilité qu'autre chose...
Une version plus lisible est :
1 2 3 4
| if (condition)
variable = valeur1 ;
else
variable = valeur2 ; |
Déjà plus compact, tout aussi lisible... Et, dans le cas précis qui nous occupe, on a encore mieux :
variable = (condition) ? (valeur1) : (valeur2) ;
Il ne faut certes pas exagérer sur les opérateurs ternaires, mais il ne faut pas non plus les rejeter pour rien.
Ceci étant dit, il faut quand même éviter ceci :
(condition1) ? (variable1) : (variable2) = (condition2) ? ( (condition3) ? (valeur1) : (valeur2)) : ( (condition4) ? (valeur3) : (valeur4)) ;
Certes, c'est du code "légal", mais c'est pas facile à suivre...
Partager