Le développement piloté par les tests est-il bon pour un débutant? [fermé]

StackOverflow https://stackoverflow.com/questions/137623

  •  02-07-2019
  •  | 
  •  

Question

Élargir cette question sur la façon dont j'ai appris à passer de description du problème au code . Deux personnes ont mentionné TDD.

Serait-il bon pour un débutant d'entrer dans le TDD (et d'éviter les mauvaises habitudes à l'avenir?) ou serait-il trop complexe pour une étape où comprendre ce qu'est un langage de programmation?

Était-ce utile?

La solution

TDD est censé être plus simple que le "traditionnel" méthode (de ne pas le tester jusqu’à la fin) - parce que les tests clarifient ce que vous comprenez du problème. Si vous ne saviez pas vraiment quel était le problème, passer des tests est assez difficile.

Donc, pour un débutant, écrire des tests pousse la réflexion dans la bonne direction: un comportement contractuel, pas un comportement de mise en œuvre.

Autres conseils

J'aimerais que TDD soit là quand j'ai commencé à apprendre à programmer et que je l'avais ramassé avant de devenir tellement ancré à l'ancienne, de sorte qu'il m'est très difficile d'apprendre le TDD ...

Expérimentation des règles TDD Tous

Je pense aussi que, dans l’idéal, le TDD serait très utile dans les premiers stades de l’apprentissage. Avec le recul, je sais que cela pourrait m'aider à aborder les problèmes sous un angle complètement différent.

Ce qui me rend perplexe, c'est que lorsqu'on apprend, on absorbe tellement de nouveaux concepts que la confusion peut commencer à se poser très tôt. Par conséquent, même si je pense que le TDD serait extrêmement utile, je ne pense pas que cela puisse être appris avec succès par soi-même.

Comme toute autre chose dans la vie, nous avons tendance à mieux apprendre quand quelqu'un nous enseigne physiquement . Nous montrer comment ils abordent les problèmes de manière TDD peut faire beaucoup plus que lire à ce sujet dans des livres ou sur le Web. Je veux dire, cela ne peut pas faire de mal, mais ce n'est pas un substitut pour un mentor qui peut vraiment vous montrer les ficelles du métier.

L'expérience du TDD est tout donc si quelqu'un peut vous apprendre à le faire au cours de ces premières étapes, je pense que l'apprentissage dans son ensemble serait accéléré au-delà de ce que quiconque attendre.

def self.learn_tdd_and_programming_together?
  if you_have_tdd_mentor_sitting_next_to_you?
    "go for it"
  else
    if language.ruby?
      "it's possible, there is quite a bit of good stuff out 
      there that could give you a chance of learning programming 
      with TDD from the start. It's sort of in the ruby culture"
    elsif language.dot_net?
      "learn TDD after you learn the basics of .NET"  
    end
  end
end

c'est certainement beaucoup à prendre, mais cela dit, j'aimerais pouvoir commencer à écrire des tests unitaires. Ce qui aurait en fait été une bonne chose, c’était si j’avais sur mon lieu de travail un mentor qui aurait pu guider mes progrès en matière de TDD. Cela fait environ un an que je suis auto-apprenant à apprendre le TDD. Il y a beaucoup à couvrir et plus vous le faites, plus cela devient impliqué, mais cela commence vraiment à porter ses fruits pour moi maintenant.

Je pense que ce commenter montre que cela peut être une très bonne chose pour les débutants d’apprendre directement.

Ma devise de programmation est:

  1. Faites-le fonctionner - le programme résout le problème
  2. Bien faire les choses - le programme est conçu de manière propre et il y a une petite quantité de duplication
  3. Make it fast - optimisé (si nécessaire)

Le développement piloté par les tests gère les deux premiers.

Je pense qu'un débutant devrait apprendre le TDD afin qu'il sache comment faire fonctionner un programme. IMHO, alors seulement peut-on enseigner de bonnes techniques de conception.

Je pense que oui. Des études ont même révélé que les avantages sont les plus importants pour les débutants . Cela vous donne plus de conseils pour écrire le code. Vous savez quels devraient être les résultats et le comportement, et écrivez les tests. Ensuite, vous écrivez le code. Les tests réussissent. Vous avez terminé. Et vous savez que vous avez terminé.

Oui! Absolument.

Je pense que ce n'est pas bon pour quelqu'un qui apprend simplement la programmation. Comment cette personne saura-t-elle quoi affirmer? : P TDD est pour la conception, pas pour les tests. Une fois qu'une personne sait comment programmer, ce sera une bonne chose de commencer à étudier l'approche TDD.

Vous devez d’abord comprendre comment bien coder. Lisez, étudiez et pratiquez jusqu'à ce que vous maîtrisiez bien le sujet. Une fois que vous avez cela, examinez la conception pilotée par les tests - elle est très puissante.

Un avantage important du TDD est la définition de la cuisson. Dans la programmation algorithmique simple, si vous proposez deux scénarios dans lesquels l’exactitude est facile à affirmer, il est facile de les énumérer dans un test unitaire et de continuer à coder jusqu’à ce qu’ils fonctionnent.

Parfois, les tests unitaires peuvent être difficiles pour les débutants, s’il existe de nombreuses dépendances et que vous commencez à vous heurter à des scénarios dans lesquels le moquage d’objets est nécessaire.

Cependant, si vous pouvez faire une déclaration simple sur la correction, et qu'il est facile de la saisir, écrivez-la définitivement dans le code.

Vous pouvez également noter que si une simple déclaration d'exactitude n'est pas facilement décrite, vous risquez de ne pas bien comprendre votre problème.

Bonne chance ...

Cela dépend vraiment de votre définition d'un "démarreur". Si par " starter " vous voulez dire quelqu'un avec absolument aucune expérience en programmation, alors non, je ne pense pas que le TDD soit un très bon moyen de commencer. Un programmeur doit apprendre les bases (éviter les boucles infinies, l’allocation de mémoire, etc.) avant de se préoccuper de la refactorisation et du développement piloté par les tests.

code est un code, qu’il s’agisse de la chose à essayer ou d’un test.

Apprendre le TDD au tout début a beaucoup de valeur. C'est l'une de ces compétences qui devrait être une habitude. Nous sommes nombreux à comprendre et à apprécier la valeur de tdd, mais des années de programmation ont inculqué des habitudes qu'il peut être difficile de changer plus tard.

En ce qui concerne TDD pour la conception du contrat / la mise en oeuvre / le test du code, c’est tout. Est-ce que TDD vous apportera le code parfait? Non, l'expérience et l'étude du métier vous aideront à développer vos approches de codage. Mais TDD est un outil très important pour tous les développeurs.

L’utilisation de TDD contribuera, espérons-le, à vous amener à une conception testable. Et une conception qui est testable est en théorie bien encapsulée et devrait adhérer au principe ouvert-fermé.

À mon avis, tant que les utilisateurs considèrent TDD comme un outil de niche ou comme une option lors de l'écriture de code, ces personnes n'obtiennent évidemment pas la valeur de TDD.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top