
1. Duplicate Code
1.1. solutions
1.1.1. Introduce Null Object
1.1.2. Unify Interfaces with Adapter
1.1.3. Extract Composite
1.1.4. Replace One/Many Distinctions with Composite
1.1.5. Chain Constructors
1.1.6. Introduce Polymorphic Creation with Factory Method
1.1.7. Form Template Method
1.2. rodzaje
1.2.1. ukryte
1.2.2. jawne
2. Long Method (długa metoda)
2.1. solutions
2.1.1. Replace Conditional Logic with Strategy
2.1.2. Move Accumulation to Visitor
2.1.3. Replace Conditional Dispatcher with Command
2.1.4. Move Accumulation to Collecting Parameter
2.1.5. Compose Method
2.1.6. Extract Method
2.2. metoda powina być max 10 lini...
2.2.1. a w większości przypadków 5
2.3. nie warto pisać dużych metod na początku
2.3.1. faktoryzacja jest na końcu
3. Speculative Generality (ogólność spekulatywna)
4. Solution Sprawl ( rozrzucanie rozwiązania )
4.1. solutions
4.1.1. Move Creation Knowledge to Factory
4.2. Shotgun surgery
4.2.1. brat biźniak
4.2.2. pokazuje się w trakcie pracy z kodem, w odróżnieniu od Solution Sprawl (które wyczuwa się przy analizie)
5. Switch Statment ( instrukcje switch )
5.1. solutions
5.1.1. Replace Conditional Dispatcher with Command
5.1.2. Move Accumulation to Visitor
6. Oddball Solution (osobliwe rozwiązanie)
6.1. solutions
6.1.1. Unify Interfaces with Adapter
7. Combinational Explosion (eksplozja kombinatoryczna)
7.1. solutions
7.1.1. Replace Implicit Language with Interpreter
8. Conditional Complexity ( złożoność warunków )
8.1. solutions
8.1.1. Introduce Null Object
8.1.2. Replace State-Altering Conditionals with State
8.1.3. Move Embellishment to Decorator
8.1.4. Replace Conditional Logic with Strategy
8.2. za bardzo rozbudowane i nieczytelne instrukcje warunkowe
9. Primitive Obsession (pierwotna obsesja)
9.1. solutions
9.1.1. Replace Conditional Logic with Strategy
9.1.2. Replace State-Altering Conditionals with State
9.1.3. Replace Type Code with Class
9.1.4. Replace Implicit Tree with Composite
9.1.5. Replace Implicit Language with Interpreter
9.1.6. Move Embellishment to Decorator
9.1.7. Encapsulate Composite with Builder
9.2. występuje gdy jeszcze nie zdecydowaliśmy się na użycie jakichś większych abstrakcji
10. Indecent Exposure (nieprzyzwoite obnażanie się)
10.1. Encapsulate Classes with Factory
11. Alternative Class With Different Interfaces ( podobne klasy o innych interfejsach )
11.1. solutions
11.1.1. Unify Interfaces with Adapter
12. Large class (dużą klasa)
12.1. solutions
12.1.1. Replace Conditional Dispatcher with Command
12.1.2. Replace State-Altering Conditionals with State
12.1.3. Replace Implicit Language with Interpreter
12.1.4. extract class
12.1.5. extract sub-class
12.2. gdy zbyt wiele zmiennych egzemplarzy
13. Lazy class (leniwa klasa)
13.1. solutions
13.1.1. Inline Singleton