Je travaille dans une entreprise qui obtiendrait 11 sur Joel Test - au moins sur papier.
Dans la pratique, cependant, rien ne fonctionne aussi bien que prévu et le projet est sur DEFCON 1 depuis six mois. Maintenant, la plupart de mes pairs sont heureux s'ils peuvent rentrer chez eux à 18 heures - dimanche.
L'une des bonnes pratiques apparemment qui m'ont semblé ne pas fonctionner est l'utilisation d'outils d'analyse statique. Le projet suit à la fois les avertissements gcc -Wall et un outil propriétaire et très coûteux "C / C ++" .
Les avertissements Gcc indiquent le plus souvent des bogues réels (si la plupart du temps sont inoffensifs).
Les outils propriétaires répertorient cependant des éléments tels que les transtypages implicites et la taille d'un littéral de chaîne. Les moulages implicites sont également sur liste noire sur leur livre de styles.
La pratique courante est que les gens sont pressés de fermer chaque avertissement. Notez que cela exclut les avertissements qui sont principalement des faux positifs, ce n'est pas le problème.
Le résultat est:
- Les gens ajoutent des transtypages de type à chaque valeur r et à chaque argument cachant de véritables asymétries de type problématique dans le processus.
- Les gens introduisent un bogue ou utilisent une fonction de langage problématique différente (strlen au lieu de sizeof, strncpy au lieu de strcpy, etc.)
- Les avertissements sont réduits au silence.
- Les rapports de bogues commencent à rouler.
Le point principal est que le code original fonctionnait et était écrit par des gens qui jouaient en sécurité dans leurs capacités linguistiques alors que les correctifs ne l'étaient pas.
Maintenant, je ne pense pas vraiment que cette entreprise puisse être sauvée. Cependant, j'aimerais savoir s'il existe une meilleure façon, de préférence de travailler, d'utiliser les outils "pro" ou si je dois simplement éviter de les utiliser complètement au cas où ce serait moi qui prendrais la décision à l'avenir.
Une solution qui ne suppose pas que tous les programmeurs sont des génies qui ne peuvent pas se tromper. Parce que bien, s'ils le sont, alors il n'est pas nécessaire d'utiliser les outils en premier lieu.