Zastąp ify przez polimorfizm
Niecały rok temu pisałem o prezentacji Tomasza Nurkiewicza pt. Uwolnić się od ifów.
Istotnie, wiele instrukcji warunkowych w kodzie utrudnia jego zrozumienie, testowanie i utrzymanie. Często w takiej sytuacji łamany jest Single Responsibility Principle.
Kod zależny od trybu wywołania
if (DEBUG) {
// lots of code here
} else {
// lots of similar code here
}
Kod zależny od wartości argumentu przekazywanego do metody
public double calculatePrice(Collectionsproducts, boolean discount) { // some calculations here if (discount) { price = price - DISCOUNT; } return price; }
Więcej na ten temat pisze Martin Fowler w artykule Flag Argument
Poniżej Miško Hevery omawia, jak pozbyć się ifów i switchy wprowadzając hierarchię klas oraz polimorficzne wywołania.
Po obejrzeniu prezentacji, warto zajrzeć do książki Refactoring, z której Miško zaczerpnął przykłady.