Sur mars, sans condition !

Objectif

Ne pas utiliser de structure conditionnelle, de type if / else ou switch.

Pourquoi éviter les if ?

Single Responsibility Principle

  • Chaque branche représente une responsabilité potentielle.

 

  • La méthode risque d'avoir plusieurs raisons de changer.

Open Closed Principle

  • La solution de facilité est d'ajouter une branche pour chaque nouveau comportement.

 

  • La méthode devrait donc être modifiée à chaque fois.

Exemple

public String display(int number) {
    if (isMultipleOf(number, 15)) {
        return "fizzbuzz";
    }
    if (isMultipleOf(number, 10)) {
        return "kaboom";
    }
    if (isMultipleOf(number, 7)) {
        return "bang";
    }
    if (isMultipleOf(number, 5)) {
        return "buzz";
    }
    if (isMultipleOf(number, 3)) {
        return "fizz";
    }
    if (number == 13) {
        return "bouh";
    }
    return String.valueOf(number);    
}

Règles du jeu

Mars Rover

  • La position du rover est définie par des coordonnées (x, y) et une orientation (nord, sud, est, ouest).
  • Le rover accepte 3 commandes :
    • Pivoter à gauche
    • Pivoter à droite
    • Avancer

Mars Rover

Position initiale = (0, 0, NORD)

Commande = Pivoter à droite

Nouvelle position = (0, 0, EST)

Commande = Avancer

Nouvelle position = (1, 0, EST)

Pour aller plus loin

Commande = Avancer de 2 cases

Nouvelle position = (2, 0, EST)

  • Le rover accepte la commande « Reculer »
  • La commande « Avancer » devient paramétrable avec le pas

Position initiale = (0, 0, EST)

Merci

@nphumbert

@rnowif

Sur mars, sans condition !

By Nadia Humbert-Labeaumaz

Sur mars, sans condition !

  • 1,182