Comme l’écrit Thibault sur son blog, il est aisé de reconnaitre les mauvais développeurs:
Mais au fond, qu’est-ce qu’un mauvais développeur? Intuitivement, nous savons les reconnaître quand nous les voyons (ou quand nous voyons leur code).
Parce que bon, le mauvais développeur, il doit écrire un programme, et ben, il code, tandis que le bon développeur, il doit écrire un programme, bon… il code. Mais bon, c’est un bon développeur
Au passage, si vous ne savez pas différenciez le bon chasseur et le mauvais chasseur, commencez par revoir vos classiques.
Et donc, d’après Thibault, le mauvais développeur a une furieuse tendance à:
- Recoder ce qui existe déjà
- Écrire un code illisible
- Écrire beaucoup de commentaires
- Optimiser à mort
Mais pas seulement. Je rajouterais qu’il a aussi quelques autres mauvaises habitudes:
Il aime chercher les ennuis
Il parle en français, il écrit en français (enfin un dialecte qui y ressemble, les fautes d’orthographe et de grammaire en plus), donc notre mauvais développeur code en français.
String enlèveLesAccents(String chaîne) {
String résultat = "";
for (int conteur = 0; conteur < chaîne.length; conteur++) {
char caractère = chaîne[i];
if (caractère == 'é' || caractère == 'è' || caractère == 'ê') {
caractère = e;
} else if (caractère == 'à') {
caractère = a;
}
résultat += caractère;
}
return résultat;
}
Pour celui qui est derrière, c’est juste pénible de taper les accents.
Il aime donc nommer ses variables et ses méthodes dans la langue de Molière avec les accents et tout et tout. Mais parfois il code quand même en anglais…
C’est un adepte du copier/coller
Et oui, notre mauvais développeur code parfois en anglais… quand il pompe du code sur internet ! Ca ne le dérange pas de mettre l’une en dessous de l’autre deux méthodes qui ne sont pas codé dans la même langue, qui n’ont pas la même indentation, les mêmes conventions, etc.
String enlèveLesAccents(String chaîne) {
String résultat = "";
for (int conteur = 0; conteur < chaîne.length; conteur++) {
char caractère = chaîne[i];
// Remove german accents
char c = caractère;
switch (c)
{
case 'ü': c = 'u'; break;
case 'ä': c = 'a'; break;
case 'ö': c = 'o'; break;
}
caractère = c;
if (caractère == 'é' || caractère == 'è' || caractère == 'ê') {
caractère = e;
} else if (caractère == 'à') {
caractère = a;
}
résultat += caractère;
}
return résultat;
}
Il aime la concision
Le mauvais développeur aime les noms de variable et de méthode concis.
Franchement on comprend tout de suite que la méthode qui suit enlève les accents de la chaine passée en paramètre. Non?
elvAct(String c) { ... }
Le mauvais développeur adore donc les acronymes et les abréviations, surtout quand peu de personnes les connaissent.
int calcPZT(int p1, double p2, double p4) { ... }
Et quand l’imagination fait défaut, le mauvais développeur sait toujours s’en sortir pour nommer ses variables: v1, v2, v3, …
int calcPTU(int p1, int p2, double p3) {
double v1;
int v2;
String v3;
byte[] v4;
v2 = p2 + 7;
v1 = p1*4.12d + p3;
v3 = "" + v2;
v4 = v3.getBytes("UTF-8");
return 1 + v4.length;
}
Il aime les mystères
Le mauvais développeur aime tester plusieurs versions de son algorithme, et aime laisser des lignes commentées sans qu’on sache pourquoi, ou bien indiquer ce qui ne marche pas sans explications.
int calcPTU(int p1, int p2, double p3) {
int v2 = p2 + 7;
// if (v2 < 9) {
// v2 = 9;
// }
double v1 = p1*4.12d + p3;
String v3 = "" + v2;
byte[] v4 = v3.getBytes("UTF-8");
// TODO: Si p1 vaut 7, alors la fonction ne retourne pas le
// bon résultat, il faudrait corriger ça dans une prochaine version.
return 1 + v4.length;
}
Remarquez le test sur v2 commenté sans qu'on sache le pourquoi du comment. Le mauvais développeur aime être mystérieux !