LaDissertation.com - Dissertations, fiches de lectures, exemples du BAC
Recherche

Structurez votre code avec des fonctions et du TDD

Thèse : Structurez votre code avec des fonctions et du TDD. Recherche parmi 298 000+ dissertations

Par   •  4 Février 2019  •  Thèse  •  1 459 Mots (6 Pages)  •  426 Vues

Page 1 sur 6
  • Aller au contenu
  • Choisir la langue
  • Aller à la recherche
  • Parcours
  • Cours
  • Premium
  • For Business

Valentin Girard

  • Accueil 
  • Cours 
  • Démarrez votre projet avec Java 
  • Structurez votre code avec des fonctions et du TDD

Démarrez votre projet avec Java

  • [pic 1]15 heures
  • Facile

Licence

Mis à jour le 28/01/2019

Structurez votre code avec des fonctions et du TDD

 Pour télécharger les vidéos de ce cours, devenez Premium

Pour l'instant les rôles ne sont pas bien organisés dans nos classes. La classe  Main  ne doit servir qu'à exécuter le lancement. Tout ce qui est relatif aux commandes doit se trouver dans la classe  Order . Or, ici, c'est la classe  Main  qui récupère la saisie de la commande de notre utilisateur.

C'est un mauvais découpage, si un développeur reprend notre code, il aura du mal à comprendre ce que nous avons voulu faire.

Nous allons créer dans la classe  Order  une nouvelle fonction nommée  runMenu.

/**

 * Run asking process for a menu.

 */

public void runMenu() {

}

C'est elle qui va se charger de récupérer la saisie utilisateur à la place de la fonction main.

Pour récupérer une version propre du projet prêt pour ce chapitre vous pouvez importer le projet git suivant : MyMenu - Step 3

Le TDD

Le Test Driven Development est une pratique de développement qui améliore beaucoup la qualité de votre code. En pensant aux tests d'une fonction avant de coder celle-ci on s'assure de penser à tous les cas et surtout d'avoir des tests de grande qualité.

Les tests sont surtout utilisés quand un autre développeur reprend votre travail. Il pourra modifier votre code et lancer les tests pour s'assurer qu'il n'a pas fait d'erreurs. Si les tests couvrent tous les scénarios possibles, il y aura forcément un test en rouge en cas d'erreur.

Le TDD consiste  à :

  1. Rédiger en amont les tests pour votre code, en veillant à tester chaque scénario.
  2. Exécuter ces tests et vérifier qu'aucun ne fonctionne.
  3. Écrire le code de la fonction concernée.
  4. Exécuter à nouveau les tests jusqu'à ce que ceux-ci fonctionnent.

Pour cette-fois, j'ai rédigé pour vous le test de  runMenu . Ne vous y habituez pas, bientôt ce sera à vous de le faire. Copiez le test suivant dans la classe OrderTest  sans vous soucier de le comprendre pour l'instant. Il vérifie le bon fonctionnement du programme.

@Test

public void Given_ChikenInStandardInput_When_MenuIsRun_Then_DisplayCorrectProcess() {

    System.setIn(new ByteArrayInputStream("1\n".getBytes()));

    order = new Order();

    order.runMenu();

    String output = outContent.toString().replace("\r\n", "\n");

    assertEquals(output.endsWith("Vous avez choisi comme menu : poulet\n"), true);

    assertEquals(output.length() > "Vous avez choisi comme menu : poulet\n".length(), true);

}

Si elle ne s'ajoute pas automatiquement, pensez à ajouter la ligne 
import java.io.ByteArrayInputStream;  en haut du fichier  OrderTest  .

Exécutez-le : le test est rouge ! Il va falloir écrire le code de notre fonction pour qu'il passe au vert.

Pourquoi exécuter les tests pour qu'ils passent au rouge ? On sait déjà que le test ne va pas fonctionner !

C'est pour être certain que votre test vérifie quelque chose. Si le test passe au vertdès maintenant, c'est que votre test n'est pas bon.

Les tests sont à eux seuls un vaste sujet qu'il faut longtemps pratiquer pour bien maîtriser. Quand vous serez un peu plus à l'aise avec Java, je vous invite à lire le cours consacré aux tests, pour aller plus loin avec ce sujet.

Notre nouvelle fonction

Étudions maintenant chaque ligne du code de la  fonction  main  contenue dans notre classe  Main. C'est ce code qu'il va falloir déplacer dans la fonction dans  runMenu .

public static void main(String[] args) {

    Order order = new Order();

    order.displayAvailableMenu();

    Scanner sc = new Scanner(System.in);

    int nb = sc.nextInt();

    order.displaySelectedMenu(nb);

}

Que remarque-t-on avec la première ligne ?

Order order = new Order();

On utilise le mot-clé  new , donc notre  Order  est une variable de type objet ! Vous comprenez maintenant ce qu'est une variable de type objet : un fichier renfermant différentes fonctions. D'ailleurs avec les types objets on parle de méthodes et pas de fonctions.

...

Télécharger au format  txt (8.8 Kb)   pdf (256 Kb)   docx (514.8 Kb)  
Voir 5 pages de plus »
Uniquement disponible sur LaDissertation.com