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(Collections products, 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.

One Response to “Zastąp ify przez polimorfizm”

Leave a Reply