7
votes

Comment TDD compare-t-il avec les langages de programmation fonctionnelle?

Comment TDD se compare-t-il avec des langages de programmation fonctionnelle comme F # et Erlang?

Je n'ai pas encore travaillé directement avec une langue de programmation fonctionnelle, mais d'après ce que j'en ai vu, vous avez deux côtés d'une équation et il faut équilibrer comme dans l'algèbre ou la comptabilité; Cela semble quelque peu rappelant TDD où vous définissez vos sorties attendues en tant que relevés d'affirmation (un côté de l'équation) et le reste de la fonctionnalité entre une classe découplée à partir du test (de l'autre côté de l'équation), sauf que la programmation fonctionnelle IMHO semble un peu plus propre.

Les deux ont-ils des similitudes, ou je suis juste omniprésent cela un peu?


0 commentaires

5 Réponses :


9
votes

Je pense que TDD et la programmation fonctionnelle (FP) sont différentes dans ce TDD, une méthodologie et une PF sont une programmation paradigme.

Je dirais que la FP aide à la pratique du TDD en tant que FP vous encourage à rendre les choses déterministes lorsque cela est possible. Les fonctions déterministes sont beaucoup plus faciles à tester que les non déterministes.


0 commentaires

21
votes

Méthodologie de développement de la conception de logiciel contre


Ils sont orthogonaux.

TDD est une approche de développement de logiciels qui se concentre sur la correction de l'exactitude en développant des tests par rapport aux spécifications avant l'écriture du code de production. La programmation fonctionnelle est un paradigme pour la conception et la mise en œuvre de logiciels.


3 commentaires

Oh bien, pensais que j'étais sur quelque chose, merci d'avoir refusé cela.


Ils sont orthogonaux, mais TDD a une partie de la "sensation" de la FP. Difficile de le mettre en mots plus clairs que ça ...


Ici, avez un uppot sur votre commentaire, qui vous donne ... Nul points!



2
votes

Vous êtes correct que lorsque vous écrivez un programme fonctionnel, vous pouvez utiliser un raisonnement d'équation pour dériver la définition d'une fonction. Cependant, que le raisonnement n'existe généralement pas sur une forme de réifié (telle que des tests), il n'est donc pas essentiel que une fonction soit prouvée correcte de manière à être vérifiable à la machine ou à l'homme. Il est certainement possible d'utiliser TDD avec des langages fonctionnelles (par exemple, d'utiliser n'importe quelle bibliothèque TDD compatible .NET avec F #) pour vérifier que les fonctions ont été dérivées correctement, mais il existe également d'autres stratégies de test pouvant être plus propres aux langages fonctionnels, tels que l'utilisation de QuickCheck pour la vérification des spécifications randomisées.


0 commentaires

6
votes

Chris a raison de dire qu'ils sont orthogonaux. Cependant, il existe des aspects de la programmation fonctionnelle qui facilitent les tests de programmes fonctionnels.


0 commentaires

0
votes

Je pense que la sensation similaire entre les deux tiges du fait que, avec les deux fonctions, sont censées être déterministes. Les fonctions de FP ne doivent pas avoir d'effets secondaires et d'effets secondaires dans les fonctions de test pour le code orienté objet doivent être supprimés par des talons d'injection.


0 commentaires