Ce n'est “pas HUMIDE à SEC” signifie quand on parle de tests unitaires?
J'ai entendu quelqu'un dire que les tests unitaires (par exemple, nUnit, jUnit, xUnit) doit être
(E. g. les tests unitaires doivent contenir "humide code" ne pas "sécher" le code")
De quoi parlent-ils?
- Il n'y a rien de spécial au sujet des tests unitaires que les bons de souscription non-SEC code. L'écriture non-SEC tests est une excuse par les programmeurs paresseux pour tenter de se tailler un territoire pour leur paresse. Il suffit de mettre, la Sécheresse et la lisibilité sont orthogonaux préoccupations.
Vous devez vous connecter pour publier un commentaire.
C'est un équilibre, non pas une contradiction
HUMIDE et SEC ne sont pas contradictoires, mais elles l'équilibre sont deux aspects différents d'un code de maintenabilité. Facile à entretenir (le code qui est facile à changer) est le but ultime ici.
HUMIDE (Descriptif Et Significative des Phrases) favorise la lisibilité du code.
À la maintenance du code, vous devez d'abord comprendre le code. Pour le comprendre, vous devez le lire. Pensez un instant à la façon dont beaucoup de temps que vous passez lecture code. C'est beaucoup.
HUMIDE augmente la facilité de maintenance en réduisant le temps nécessaire pour lire et comprendre le code.
SEC (Don't repeat yourself) favorise la orthogonalité du code.
L'élimination du double emploi veille à ce que chaque concept dans le système a une unique autorité de la représentation dans le code. Un changement à un seul concept d'entreprise les résultats dans une seule modification dans le code. SEC augmente la facilité de maintenance en isolant le changement (de risque) pour les éléments du système qui doit changer.
Alors, pourquoi est la duplication de plus en plus acceptables dans les tests?
Tests contiennent souvent inhérente à la duplication parce qu'ils sont tester la même chose encore et encore, seulement légèrement différentes valeurs d'entrée ou de code de configuration. Cependant, contrairement à la production de code, cette duplication est généralement isolé, que les scénarios au sein d'une seule installation de test/fichier. De ce fait, la duplication est minime et évident, ce qui signifie qu'il représente moins de risques pour le projet que les autres types de duplication.
En outre, la suppression de ce genre de duplication réduit la lisibilité des tests. Les détails qui ont été précédemment dupliqué dans chaque test sont maintenant cachés dans une nouvelle méthode ou d'une classe. Pour obtenir une image complète de l'épreuve, vous devez maintenant mentalement mettre tous ces morceaux ensemble.
Par conséquent, depuis le test de la duplication de code souvent présente moins de risques, et favorise la lisibilité, il est facile de voir comment il est considéré comme acceptable.
Comme un principe, favorable à SEC dans le code de production, la faveur d'HUMIDITÉ dans le code de test. Alors que les deux sont tout aussi importants, avec un peu de sagesse, vous pouvez faire pencher la balance en votre faveur.
"HUMIDE SÉCHEZ pas les" valeurs de la lisibilité sur le code de la réutilisation. L'idée de l'HUMIDE, ne pas SÉCHER dans des cas de test, c'est que les tests doivent être faciles à comprendre, même si cela signifie que les cas de test ont parfois du code à répétition.
Voir aussi Est code dupliqué plus tolérable dans les tests unitaires? pour une discussion sur le bien-fondé de ce point de vue.
Il peut avoir été inventé par Jay Champs, en ce qui concerne le Domaine des Langues Spécifiques.
"SEC" est "Don't repeat yourself"
C'est un terme qui est utilisé pour dire aux gens d'écrire du code qui est réutilisable, de sorte que vous ne finissent pas l'écriture de code similaire, encore et encore.
"HUMIDE" est "Descriptif Et Significative des Phrases".
Ce terme est destiné à vous dire d'écrire du code qui peut être facilement compris par quelqu'un qui regarde. Si vous suivez ce principe, vous aurez de longues et descriptives de la variable et la fonction des noms, etc.
Humide = 'Descriptif Et Significative des Phrases' - votre les tests unitaires doivent être en mesure de "lire":
De l'article:
HUMIDE signifie “descriptif et significative des phrases” et est à l'opposé de la SEC, pas dans le sens où il est dit “tout devrait ressembler à un tas de détritus et être impossible à lire”, en ce que la lisibilité est plus important que d'éviter toute redondance de code.
http://codeshelter.wordpress.com/2011/04/07/dry-and-damp-principles-when-developing-and-unit-testing/
Il y a plusieurs réponses ici déjà, mais je voulais ajouter un autre que je ne pense pas qu'ils nécessairement expliqué que bien qu'ils le pourraient.
L'idée de DRY (Don't repeat yourself), c'est que dans votre application code que vous voulez pour éviter les doublons ou reptetive code. Si vous avez quelque chose que votre code doit faire plusieurs fois, vous devriez avoir une fonction ou d'une classe, plutôt que de répéter le même code à plusieurs endroits.
C'est assez bien connue de programmation concept.
HUMIDE (Descriptif et Meaninful Phrases) est pour les tests unitaires. L'idée ici est que votre test de l'unité des noms de méthode doit être long et descriptif -- efficacement les phrases courtes qui décrivent ce que vous testez.
par exemple:
testWhenIAddOneAndOneIShouldGetTwo() { .... }
Lorsque vous lisez un chiffon HUMIDE nom de la méthode, comme cela, vous devez comprendre exactement ce que le rédacteur de l'examen a été en essayant d'atteindre, sans même avoir à lire le code de test (bien que le code de test peuvent également suivre cette concept et bien sûr avec les lettres les noms de variables, etc).
Cela est possible parce qu'une unité de la méthode de test est très spécifique d'entrée et de sortie attendue, de sorte que l'HUMIDITÉ principe fonctionne bien pour eux. Méthodes dans votre code de l'application principale est rare d'être suffisamment précise pour justifier des noms comme cela, surtout si vous avez écrit avec le principe SEC à l'esprit.
HUMIDE et SEC ne contredisent pas les uns les autres -- elles couvrent différents aspects de la façon dont le code est écrit -- mais néanmoins, ils ne sont pas généralement utilisés ensemble, parce que les méthodes écrites avec le principe SEC à l'esprit serait d'usage général, et peu susceptible d'être adapté à très spécifique du nom de la méthode. En général, donc, comme expliqué ci-dessus, le code de votre application doit être SEC et votre code de test unitaire HUMIDE.
J'espère que permet d'expliquer un peu mieux.
Je suis d'accord avec Chris Edwards que vous avez besoin de trouver un équilibre entre les deux. Une autre chose à noter est que si, dans une tentative pour éliminer les doubles emplois, vous finissez par l'ajout de beaucoup plus de structure dans votre code de test unitaire (c'est à dire lors de la prise de SEC à l'extrême), vous courez le risque d'introduire des bogues là. Dans une telle situation, vous devrez soit à l'unité de test de vos tests unitaires ou de laisser des morceaux de la structure testée.
Je ne souhaite pas dupliquer les efforts, mais vous pouvez avoir des tests qui sont HUMIDES, mais ont l'avantage de SÉCHER. Sur le revers de la médaille, SÈCHE tests ne satisfait pas HUMIDE tests dans certains cas.
J'ai blogué sur SÈCHE ou HUMIDE qui contient quelques exemples.
Aucune approche devrait être votre seule solution, parfois HUMIDE, c'est du matraquage, d'autres fois un très bon ajout.
En règle générale, vous devez appliquer la règle de trois. Si vous repérez la duplication, un troisième temps, il peut être intéressant de regarder dans l'écriture de l'HUMIDITÉ style de tests, mais même alors,pas tous les dédoublements est mauvais. Le contexte a son importance.