Zpo-8-wyk-Slajd47: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Przykład==
==Shotgun Surgery==


[[Image:zpo-8-wyk-Slajd47.PNG|Przykład]]
[[Image:zpo-8-wyk-Slajd47.PNG|Shotgun Surgery]]




Przykład autorstwa M. Fowlera dotyczy klasy Date, w której brakuje metody obliczającej następny dzień. Aby uniknąć obliczania tej wartości ręcznie, można stworzyć metodę ''nastepnyDzien'' ''()'' i umieścić ją w pobliżu miejsca jej wywołania.
Ten przykry zapach jest pewnego rodzaju uzupełnieniem poprzedniego. Ma miejsce wówczas, gdy zmiana w tej klasie powoduje modyfikację innych klas. Różnica polega na odwrotnym kierunku zależności: w przypadku Divergent Change są to zależności przychodzące, natomiast w tym – wychodzące. Jest to zgodne z koncepcją R. Martina niezależnych metryk dla tych dwóch rodzajów zależności: Ca i Ce.
 
Tym razem przeciwdziałanie temu problemowi polega na hermetyzacji w obrębie jednej klasy wszystkich obszarów podlegającym zmianie z jednego powodu – poprzez przesunięcia metod, pól, tworzenie nowych klas i usuwanie niepotrzebnych.




[[zpo-8-wyk-Slajd46 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd48 | Następny slajd >>]]
[[zpo-8-wyk-Slajd46 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd48 | Następny slajd >>]]

Aktualna wersja na dzień 18:15, 4 lis 2006

Shotgun Surgery

Shotgun Surgery


Ten przykry zapach jest pewnego rodzaju uzupełnieniem poprzedniego. Ma miejsce wówczas, gdy zmiana w tej klasie powoduje modyfikację innych klas. Różnica polega na odwrotnym kierunku zależności: w przypadku Divergent Change są to zależności przychodzące, natomiast w tym – wychodzące. Jest to zgodne z koncepcją R. Martina niezależnych metryk dla tych dwóch rodzajów zależności: Ca i Ce.

Tym razem przeciwdziałanie temu problemowi polega na hermetyzacji w obrębie jednej klasy wszystkich obszarów podlegającym zmianie z jednego powodu – poprzez przesunięcia metod, pól, tworzenie nowych klas i usuwanie niepotrzebnych.


<< Poprzedni slajd | Spis treści | Następny slajd >>