Начать. Это бесплатно
или регистрация c помощью Вашего email-адреса
smell of code - solutions создатель Mind Map: smell of code - solutions

1. Move Accumulation to Visitor (286)

1.1. kiedy

1.1.1. jeśli bardzo robudowany swich obsługuje dane z wielu interfejsów

1.1.2. kiedy swich pobiera dane z wielu obiektów

1.2. w jaki sposóc

1.2.1. visitor usuwa instrukcje warunkowe i zapewnia większą ogólność kodu

2. Introduce to Null Object (271)

2.1. kiedy

2.1.1. jeśli korzystamy z kodu który wiele razy mam nam nic nie robić

2.1.2. jeśli w rozbudowanych if-ach dużo razy chodzi nam o to aby dostać null

2.2. w jaki sposób

2.2.1. tworzymy klasę przeładowaną pustymi metodami

3. Substitution Algorithm

3.1. kiedy

3.1.1. gdy w systemie robimy coś 1 sposobem i nagle zmieniamy go

3.1.1.1. jedno z takich podejść należy uznać za niespójne

4. Extract class/sub-class

4.1. gdy klasa tworzy zbyt wiele zróżnicowanych egzemplarzy

4.2. gdy klasa jest za duża

5. Replece implicit tree with Composite (165)

5.1. kiedy

5.1.1. jeśli mamy niejawną strukturę drzewiastą i ograniczamy się do typów prostych (jak string)

6. Move Embellishment to Decorator (136)

6.1. kiedy

6.1.1. jeśli wyrażenia warunkowe służą jakiego nietypowego zachowania klasy

6.1.2. jeśli wartości proste istnieją tylko po to aby uzupełnić podstawowe funkcje obiektu

6.2. w jaki sposób

7. Replace Conditional Logic With Strategy (123)

7.1. kiedy

7.1.1. jeśli zbyt długa metoda zawiera instrukcje if, które zmieniają algorytm metody

7.1.2. jeśl rozbudowane instrukcje warunkowe służa do wyboru jednego z wariantów obliczeń

7.1.3. jeśli typy proste decydują o użytych algorytmach i na nich opiera się logika

8. Compose Method (118)

8.1. kiedy

8.1.1. zestaw dobrze nazwanych metod o podobnym poziomie szczegółowości

8.1.1.1. zawsze na początek

8.2. w jaki sposób

8.2.1. metody tak produkowane powinny być wydajne w tym co robią i jak to robią

8.2.1.1. max 10 lini

8.2.1.2. małe

8.2.1.3. proste

9. Inline Singleton (111)

9.1. kiedy

9.1.1. gdy nadużywamy singletonu i dane coraz bardziej zależą od globalnych wartości

9.1.1.1. singletony są kosztowne

9.2. w jaki sposób

9.2.1. tworzymy singleton w klasie i działa sobie on lokalnie a nie globalnie

9.2.2. usuwamy singleton po zakończeniu pracy

10. Emcapsulate Composite with Builder (95)

10.1. kiedy

10.1.1. jeśli utworzyliśmy klasę i jej konstrukcja jest zbyt prosta aby faktycznie ułatwić budowanie klientów

10.2. w jaki sposób

11. Encapsulte Classes with Factory (81)

11.1. kiedy

11.1.1. gdy udostępnia się klientowi metody i klasy, które w rzeczywistości nie powinien on znać.

11.1.1.1. nie musi ich znać, a gdy one są wpływa to na złożoność systemu

11.2. w jaki sposób

11.2.1. tworzymy fabrykę do produkcji obiektów określonego typy i ją udostępniamy

12. More Creation Knowleadge to Factory (71)

12.1. kiedy

12.1.1. gdy zmieniając jedną metodę okazuje się, że musimy robić modyfikację w wielu miejscach

13. Chain Constructors (302)

13.1. kiedy

13.1.1. jeśli kod powtarza się w konstruktorach

13.2. w jaki sposób

14. Move Accumulations to Collecting Parameters (280)

14.1. kiedy

14.1.1. jeżeli kod gromadzi dane do wspólnej zmiennej

14.2. w jaki sposob

15. Replace Type Code with Class (258)

15.1. kiedy

15.1.1. jeśli typ proty decyduje w klasie o logice i nie zapewnia odpowiedniego bezpieczeństwa

16. Replace implicit Language with Interpreter (243)

16.1. kiedy

16.1.1. jeśli wiele metod klasy zapewnia obsługę licznych kombinacji wartości prostych

16.1.2. duża klasa, która w istocie emuluje pewien język

16.1.3. generujemy dziwaczne i w dużej ilości metody mające za zadanie obsługiwać bazę danych

16.2. w jaki sposób

16.2.1. przekształcamy klasę do klasy interpreter

17. Unify interface with Adapter (233)

17.1. kiedy

17.1.1. jeśli przetwarzamy obiekty w inny sposób tylko dlatego że mają inne interfejsy

17.1.2. jeśli dwie klasy mają podobne interfejsy, które moża połączyć w jeden

17.1.3. jeśli istnieje znana metoda do wywoływania zbioru klas, których interfejsy nie są jednolite

17.2. w jaki sposób

18. Replace One/Many Distinction with Composite (203)

18.1. kiedy

18.1.1. jeśli jeden kod przetwarza kolekcję, a jeden pojedyńczy obiekt i są bardzo podobne

18.2. w jaki sposób

18.2.1. composite pagttern

19. Extract Composite (195)

19.1. kiedy

19.1.1. jeśli każda podklasa hierarchii implementuje Composite

19.2. w jaki sposób

20. Form Template Method (188)

20.1. kiedy

20.1.1. do powtarzającego się kodu w procedurach, funkcja w podklasach pewnej hierarchii

20.2. w jaki sposób

21. Replace Conditional Dispacher with Command (177)

21.1. kiedy

21.1.1. rozbudowany switch

21.1.1.1. swich jest zły gdy jest sztywny i skomplikowany

21.1.2. jeżeli klasa realizuje zbyt wiele zachowań w odpowiedzi na bardzo zróżnicowane żądania

21.1.2.1. można dzięki temu kilkakrotnie zmniejszyć rozmiar takiej klasy

21.2. w jaki sposób

21.2.1. rozbijanie switcha na kolekcję obiektów command

22. Replace State-Altering Conditionals with State (154)

22.1. kiedy

22.1.1. jeśli bardzo złożone if-y decydują o zmianie stanu obiektu

22.1.2. kiedy typ prosty decyduje o zmianie stanu obiektu

22.1.3. kiedy duża klasa

22.2. w jaki sposób

22.2.1. wynikiem będą klasy reprezentujące poszczególne stany

22.2.2. zmienianie jej stanu poprzez wprowadzenie do rodziny klas State

23. Extract Method

23.1. kiedy

23.1.1. za długa metoda

23.2. w jaki sposób

23.2.1. znajdujemy fragmenty kodu które można pogrupować w metodę

24. Introduce Polymorphic Creation with Abstact Factory (88)

24.1. kiedy

24.1.1. jeśli metoda podobnie implementowana w podklasach,a wyznacznikiem jest sposób kreowania obiektu

24.2. w jaki sposób