Comment coder proprement
Posté le 19/12/2014 16:58
Beaucoup savent programmer et écrire des lignes de codes en écrivant parfaitement, je fais ici une liste des choses à faire pour réussir à éviter un code malpropre. Ce tuto est destiné aux langages C/C++ mais on peut aussi transposer à d'autres langages
1) L'indentation
C'est la règle absolu en programmation. Il faut savoir indenter, aussi bien pour vous que pour ceux qui liront votre code. En effet, l'indentation permet de visualiser très rapidement les différents blocs d'instructions.
Voici un exemple (il s'agit du style K&R que nous verrons après):
void a_function(void)
{
if (x == y) {
something1();
something2();
} else {
somethingelse1();
somethingelse2();
}
finalthing();
}
Il suit une indentation impeccable car on y distingue 1) la condition, 2) le bloc d'instruction exécuté si la condition est vrai et 3) le bloc d'instruction exécuté si la condition est fausse.
L'indentation sert aussi à repérer les crochets afin d'éviter les crochets en trop
Voici un exemple d'un mauvais code:
void function(void)
{
if (x == y) {
something1();
something2();
} else{
somethingelse1();
somethingelse2();
}
}
finalthing();
}
Un crochet en trop s'est même incrusté
Imaginez vous le travail pour le repérez dans un code de 5000 lignes
Il existe même plusieurs styles d'indentation que vous pouvez voir
ici (pour ma part, je travaille toujours avec le K&R
qui est plus facile et plus lisible à mon sens)
2) La modularité
La modularité, c'est le principe du découpage d'un code en modules, c'est à dire en petite partie qui vont chacune s'occuper d'un truc bien défini, par exemple, tracer une ligne à l'écran ou calculer un nombre au hasard, cela permet de rendre plus lisible un code et de pouvoir utiliser un bout de code en une ligne
.
Par exemple, voici ce qu'il ne faut pas faire
int main() {
//...
//...
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++i)
{
mat[i][j] = 1;
}
}
return 0;
}
On peut remarquer deux boucles l'une dans l'autre mais dans la fonction principale
main, créons une fonction:
void InitTab2Dim (int** mat, int n, int m, int var)
{
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
mat[i][j] = v;
}
}
}
int main() {
//...
//...
InitTab2Dim(mat,n,m, 1)
return 0;
}
On a créé une fonction dans laquelle on a mis le code gênant, puis on a appelé la fonction. On pourrait grâce à ça appeler une vingtaine de fois la fonction sans avoir à recopier le code
3) Bien nommer ses attributs
4) Les tableaux, pointeurs et références
5) La complexité
6) Speak English, please
7) utiliser correctement le préprocesseur
a suivre...
Note pour Lephe
Citer : Posté le 20/12/2014 23:33 | #
Il faut utiliser beaucoup de fonctions.
Exemple à ne pas faire :
int main() {
//...
//...
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++i)
{
mat[i][j] = 1;
}
}
return 0;
}
Exemple à faire :
{
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
mat[i][j] = v;
}
}
}
int main() {
//...
//...
InitTab2Dim(mat,n,m, 1)
return 0;
}
les fonctions qui retournent un booléen doivent commencer par "Is" ou "Est" ( par exemple EstVide(foo), isEmpty(foo) ).
Citer : Posté le 21/12/2014 09:56 | #
les fonctions qui retournent un booléen doivent commencer par "Is" ou "Est" ( par exemple EstVide(foo), isEmpty(foo) ).
Pas seulement : hasChildren() par exemple.
Sinon, faut aussi veiller à utiliser des algorithmes à faible complexité.