Wzorce i refaktoryzacja
Wzorce projektowe w kodzie i refaktoryzacji
Kod szkolenia: JAVA-REF
Szkolenie powstało z myślą o programistach Java, którzy chcieliby zapoznać się z wzorcami projektowymi od strony projektowania, programowania i refaktoryzacji. Dlatego jest idealnym wyborem dla programistów chcących czy to tworzyć znacznie lepszej jakości kod i rozwiązania, czy to wykonać pierwsze kroki w zakresie projektowania, aby od razu wprowadzać do kodu przemyślane rozwiązania.
Celem szkolenia jest nabycie umiejętności poprawnego stosowania wzorców. W trakcie zajęć uczymy się właściwej identyfikacji wymaganego wzorca, zaadaptowania go do specyfiki problemu (podstawy projektowania w UML) oraz wprowadzenia rozwiązania do kodu (z generowaniem kodu na podstawie UML włącznie).
Drugim wymiarem szkolenia jest wykrywanie złych rozwiązań i ich refaktoryzacja z użyciem poznanych wzorców. Tu przydatna okazuje się znajomość poprawnych zasad projektowania oraz antywzorców, z którymi zapoznajemy się, aby łatwiej zidentyfikować problemy w istniejącym kodzie.
Podczas szkolenia duży nacisk kładzie się na poprawne stosowanie wzorców, dlatego przedstawiane są podstawy projektowania, z uwzględnieniem, że grupą docelową są programiści. Pozwala to zawczasu wykryć niejasności i wprowadzić do kodu już przemyślane rozwiązania (a nawet wygenerować dla nich kod).
4 dni, po 8 godzin. Łącznie 32 godzin(y) szkolenia.
Oczekiwane przygotowanie słuchaczy przed szkoleniem
Od uczestników wymaga się umiejętności programowania w języku Java.
Polecane szkolenia uzupełniające
Powiązane szkolenia: Projektowanie systemów w notacji UML (UML-PR), Modelowanie z użyciem wzorców projektowych GOF i Core J2EE (JAVA-WZO).
- Podstawy projektowania w UML
- Czym jest, a czym nie jest UML
- Mechanizmy rozszerzania UML
- Diagramy klas
- Elementy diagramów klas
- Identyfikacja klas – metoda rzeczownikowa
- Diagram sekwencji
- Elementy diagramów sekwencji
- Poprawne tworzenie projektowych diagramów sekwencji
- Podstawy projektowania obiektowego i wprowadzenie do wzorców
- Enkapsulacja
- High Cohension
- Loose Coupling
- Command-Query Separation
- Java i dziedziczenie
- Wprowadzenie do wzorców
- Rodzaje wzorców
- GRASP (General Responsibility Assignment Software Patterns)
- Information Expert
- Creator
- Controller
- Polymorphism
- Pure Fabrication
- Indirection
- Protected Variations
- S.O.L.I.D (SOLID-ne programowanie)
- Single Responsibility Principle
- Open-Close Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Wzorce GOF
- Wzorce konstrukcyjne
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
- Wzorce strukturalne
- Adapter
- Bridge
- Composite
- Decorator
- Façade
- Flyweight
- Proxy
- Wzorce behawioralne
- Chain of responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
- Przegląd wybranych antywzorców
- Golden Hammer
- Lava Flow
- Spaghetti Code
- Busy Waiting
- Hardcoding
- Object Orgy
- Circilar Dependency
- The Blob (God Object)
- Refaktoryzacja z użyciem wzorców
- Czym jest refaktoryzacja
- Kiedy refaktoryzować? (code smell)
- Przegląd wybranych symptomów złego kodu
- Lazy class
- Large class
- Large method
- Duplicated code
- Feature envy
- Inappropriate intimacy
- Refused bequest
- Contrivied Complexity
- Excessive use of literals
- Cyclomatic complexity
- Downcasting
- Orphan variable or constant class
- Too many parameters
- Excessively long identifiers
- Excessively short identifiers
- Excessive return of data
- Poprawność refaktoryzacji – testy jednostkowe
- Wsparcie narzędzi w refaktoryzacji
- Techniki refaktoryzacji z użyciem wzorców
- Chain constructors
- Replace Constructors with Creation Methods
- Move Creation Knowdlego to Factory
- Encapsulate Classes with Factory
- Introduce Polymorphic Creation With Factory Method
- Encapsulate Composite With Builder
- Inline Singleton
- Limit Instantiation with Singleton
- Compose Method
- Move Embellishment to Deorator
- Replace Conditional Logic with Strategy
- Replace Type Code with Class
- Replace State-Altering Conditionals with State
- Replace Conditional Dispatcher with Command
- Replace One/Many Distinctions with Composite
- Extract Composite
- Replace Implicit Tree with Composite
- Extract Parameter
- Replace Hard-Coded Notifications with Observer
- Form Template Method
- Introduce Null Object
- Move Accumulation to Visitor
- Move Accumulation to Collecting Parameter
- Unify Interfaces
- Unify Interfaces with Adapter
- Extract Adapter