Ce n'est PAS une documentation de référence ABSOLUE
Notez que la plupart des éléments suivants s'appliquent également aux commentaires, car ils peuvent se désynchroniser avec le code, comme les tests (bien qu'il soit moins exécutoire).
Donc, au final, la meilleure façon de comprendre le code est d'avoir un code de travail lisible .
Dans la mesure du possible et sans écrire des sections de code de bas niveau câblées ou des conditions particulièrement délicates, une documentation supplémentaire sera cruciale.
- Les tests peuvent être incomplets:
- L'API a changé et n'a pas été testée,
- La personne qui a écrit le code a écrit les tests pour les méthodes les plus faciles à tester en premier au lieu des méthodes les plus importantes à tester, puis n'a pas eu le temps de terminer.
- Les tests peuvent être obsolètes.
- Les tests peuvent être court-circuités de manière non évidente et ne pas être réellement exécutés.
MAIS ils sont TOUJOURS un complément de documentation UTILE
Cependant, en cas de doute sur ce que fait une classe particulière, surtout si elle est plutôt longue, obscure et manquant de commentaires (vous connaissez le genre ...), j'essaie rapidement de trouver sa ou ses classes de test et de vérifier:
- ce qu'ils essaient de vérifier (donne un indice sur les informations les plus importantes, sauf si le développeur a fait l'erreur mentionnée ci-dessus en ne mettant en œuvre que les tests "faciles"),
- et s'il y a des cas d'angle.
De plus, s'ils sont écrits en utilisant un style BDD , ils donnent une assez bonne définition du contrat de la classe . Ouvrez votre IDE (ou utilisez grep) pour ne voir que les noms de méthode et tada: vous avez une liste de comportements.
Les régressions et les bogues ont également besoin de tests
Aussi, c'est une bonne pratique d'écrire des tests de régression et des rapports de bogues: vous corrigez quelque chose, vous écrivez un test pour reproduire le cas. En y repensant, c'est un bon moyen de trouver le rapport de bogue pertinent et tous les détails sur un ancien problème, par exemple.
Je dirais qu'ils constituent un bon complément à une véritable documentation et au moins une ressource précieuse à cet égard. C'est un bon outil, s'il est utilisé correctement. Si vous commencez à tester tôt dans votre projet et que vous en faites une habitude, cela POURRAIT être une très bonne documentation de référence. Sur un projet existant avec de mauvaises habitudes de codage qui empestent déjà la base de code, manipulez-les avec soin.