Envoyé par
popo
Et bien justement, sonar, pour ne citer que lui mesure une partie de l'indicateur qualité avec le code coverage.
En effet, il ne garantissent en rien la qualité du code. Mais j'ai également évoqué SRP et le nommage entres autres, qui même s'il ne font pas tout permettent néanmoins d'améliorer les choses.
Quand a couvrir toute les situations, c'est justement le rôle du test unitaire... quand un cas n'est pas couvert, on écrit un nouveau test, on corrige et se base sur les tests existant pour la non régression. Après si pour une même fonctionnalité, il y a trop souvent un nouveau cas de bug découvert, c'est un bon indicateur pour savoir que soit l'analyse ne correspond pas au besoin (bref qu'on a pas compris ce qu voulais le client), soit qu'elle a été baclée. Dans les deux cas il faudra revoir le client. Et en passant, le test effectué par un tiers non plus ne garantit ni la qualité du code ni la couverture de tous les cas. Si un cas a été oublié dans l'analyse, ce cas sera oublié aussi bien dans les tests unitaires, que dans les tests manuels ou par les robots de tests.
Pyramidev, il y a de nombreuse manières d'éviter un commentaire.
Pour ton exempler avec "FaireUnTrucA, FaireUnTrucB". Il suffit de déclarer ces méthodes en dessous de uneFonction, il aura tout directement sous les yeux.
Pour le cas des chaines de format je suis d'accord qu'un commentaire peut être utile. Quoique, certain diraient qu'on peux également renvoyer une exception et expliquer le format à l'intérieur.
Pour le findIndex, là je ne suis pas d'accord. En règle général, il existe déjà de telles méthodes dans le framework ou dans les librairies et les développeurs savent que ce genre de méthodes est sensée renvoyer l'indice de l'élément à partir de 0, ou -1 si non trouvé.
Pour le findElement, là encore, je ne suis pas d'accord. Ton Objet est dépendant d'un autre qui a potentiellement sa vie propre et tu n'ai pas en mesure de garantir sa longévité. Pour moi cette classe ne respecte ni principe d'encapsulation, ni le SRP. Il te faut une classe dédiée pour la gestion des configurations, une classe qui contiendra sa propre liste et dont la méthode findElement renverra une copie de l'item.
Partager