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 switch
y 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.