Développeur passionné
Les 5 principes fondamentaux de la programmation orientée objet
Une classe ne doit faire qu'une seule chose
Une classe ne doit pas avoir de couplage avec les implémentations de ses dépendances (délégation)
Un type doit toujours pouvoir être remplacé par un sous-type sans changer la sémantique du code
public class Rectangle {
private final int width;
private final int length;
public Rectangle(int width, int length) {
this.width = width;
this.length = length;
}
public int getLength() {
return length;
}
public int getWidth() {
return width;
}
}
public class Square extends Rectangle {
public Square(int length) {
super(length, length);
}
}
public class Rectangle {
private int width;
private int length;
public Rectangle(int width, int length) {
this.width = width;
this.length = length;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
}
public class Square extends Rectangle {
public Square(int length) {
super(length, length);
}
@Override
public void setWidth(int width) {
super.setWidth(width);
// What about the length?
}
@Override
public void setLength(int length) {
super.setLength(length);
// What about the width?
}
}
Un client d'une classe ne doit pas dépendre de méthodes qu'il n'utilise pas
Une classe doit être ouverte à l'extension mais fermée à la modification
- Should return the user when the user exists
- Should return a not found error when the user does not exist
assertThat(france.getCapital()).isEqualTo("Paris");
assertThat(france.getPopulation())
.isGreaterThan(65000000)
.isLessThan(70000000);
List<String> biggestCities = france.getThreeBiggestCities();
// At least
assertThat(biggestCities).contains("Paris", "Marseille");
// Exactly
assertThat(biggestCities).containsExactly("Paris", "Marseille", "Lyon");
// Only but in any order
assertThat(biggestCities).containsOnly("Marseille", "Lyon", "Paris");
Réalisée avec Reveal.js
Code source sur Github
Visible en ligne sur http://files.fierdecoder.fr/your-tests-need-love/
Liens vers des pages web citées pendant la présentation.