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