Je tente de prendre l'habitude d'écrire des tests unitaires régulièrement avec mon code, mais je l' ai lu que la première , il est important d'écrire le code testable . Cette question concerne les principes SOLID de la rédaction de code testable, mais je veux savoir si ces principes de conception sont bénéfiques (ou du moins ne sont pas préjudiciables) sans que l’écriture de tests ne soit nécessaire. Pour clarifier - je comprends l'importance d'écrire des tests; Ce n'est pas une question sur leur utilité.
Pour illustrer ma confusion, dans l'article qui a inspiré cette question, l'auteur donne un exemple de fonction qui vérifie l'heure actuelle et renvoie une valeur en fonction de l'heure. L’auteur pointe ce code comme étant incorrect car il produit les données (le temps) qu’il utilise en interne, ce qui le rend difficile à tester. Pour moi, cependant, il semble exagéré de passer le temps comme argument. À un moment donné, la valeur doit être initialisée et pourquoi pas au plus près de la consommation? De plus, l'objectif de la méthode dans mon esprit est de renvoyer une valeur en fonction de l' heure actuelle , en en faisant un paramètre qui implique que cet objectif peut / doit être modifié. Ceci, ainsi que d'autres questions, m'amène à me demander si un code testable était synonyme de "meilleur" code.
L'écriture de code testable reste-t-elle une bonne pratique même en l'absence de tests?
Le code testable est-il réellement plus stable? a été suggéré comme un duplicata. Cependant, cette question concerne la "stabilité" du code, mais je demande plus généralement si le code est supérieur pour d'autres raisons également, telles que la lisibilité, les performances, le couplage, etc.
func(X)
retour "Morning"
, le remplacement de toutes les occurrences de func(X)
with "Morning"
ne changera pas le programme (c.-à-d. Que l'appel func
ne fait rien que renvoyer la valeur). Idempotency implique soit ça func(func(X)) == X
(ce qui n’est pas le type correct), soit cela func(X); func(X);
produit les mêmes effets secondaires que func(X)
(mais il n’ya pas d’effets secondaires ici)