Giter VIP home page Giter VIP logo

test-validation's Introduction

Test et validation

Difficultés lié à la validation

Dans son état actuel, le programme est difficile à valider en raison de multiples points :

  • Les méthodes sont longues et impliquent de nombreux niveaux d'indentation, augmentant la complexité du code.
  • Certaines méthodes enchaînent plusieurs conditions différentes, le tout au sein de 2 boucles while imbriqués.
  • À un endroit du code, on retrouve l'utilisation d'un goto qui agis comme une boucle pour pour lire les entrées de l'utilisateur.
  • la vérification de victoire est codé en dur à travers une énorme condition de AND et OR enchaînés à la suite.
  • dans tourJoueur, le code contiens des condition imbriqués dans un switch, lui même dans une boucle while.
  • Dans le puissance 4, il reste du code mort commenté dans le fichier.

Tous ces points rendent le code difficile à lire, à comprendre et à valider, de part la longueur du code ou la complexité des conditions. (imbrication de boucles, de conditions, de switch, de goto, etc.

Les méthodes de résolution de ces problèmes

Pour résoudre ces problèmes, il sera envisageable de mettre en place certaines choses :

  • Diviser les méthodes en plusieurs méthodes plus petites, pour réduire la complexité du code
  • Utiliser des structures de données pour simplifier la vérification de victoire
  • Réduire l'imbrication des boucles et des conditions
  • Remplacer goto par des boucles
  • Supprimer le code mort
  • Utiliser des tests unitaires pour valider le code et s'assurer de son bon fonctionnement
  • Ajouter des conditions de contrôle pour s'assurer des paramètres d'entré des méthodes

Développement des fonctionnalités manquantes

Pour le développement des fonctionnalités manquantes, il sera nécessaire :

  • d'extraire la logique du joueur dans une classe dédié (AbstractPlayer), pour permettre l'ajout d'un ComputerPlayer en plus du HumanPlayer. Chacun auront une logique dédié pour jouer un coup. Par exemple, le HumanPlayer se servira le l'implémentation de IGui pour demander à l'utilisateur de jouer un coup, tandis que le ComputerPlayer utilisera une logique "calculée" pour jouer un coup.

  • pour la persistance des données, il faudra créer une classe GameSerializer qui permettra de sauvegarder et charger les données. Sur ce point, j'ai beaucoup de difficulté à imaginer une solution. En effet, pour respecter les principes de conceptions, l'idée aurait été de garder le plus d'attributs de classe privée. Hors, pour sauvegarder les données, nous aurions besoin de les rendre accessible, brisant ainsi l'idée que nos attributs de classe doivent être privé.

test-validation's People

Contributors

bricklou avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.