Opis szkolenia:
Uczestnicy szkolenia poznają zasady efektywnego wykorzystania języka Java oraz jego podstawowych bibliotek. Dowiedzą się, jak stosować wyjątki przechwytywalne i wyjątki czasu wykonania oraz poznają zalety stosowania statycznych klas składowych. Omówione zostaną także metody sprawdzania poprawności parametrów, projektowania sygnatur oraz idiomy, które umożliwiają tworzenie wydajnego i profesjonalnego programowania.
Plan szkolenia:
Tworzenie i usuwanie obiektów
- Zastosowanie Fabryk do tworzenia obiektów
- Zastosowanie budowniczego do obsługi wileu parametrów konstruktora
- Klasy singletonowe
- Unikanie powielania obiektów
- Usuwanie niepotrzebnych referencji do obiektów
Metody wspólne dla wszystkich obiektów
- Prawidłowa implementacja metod: equals, hashCode, toString
- Implementacja interfejsu Comparable
- Implementacja metody clone - wzorzec projektowy Prototype
Klasy i interfejsy
- Ograniczanie dostępności klas i ich składników
- Zapewnianie niezmienności obiektu - wzorzec Immutable
- Zastępowanie dziedziczenia kompozycją
- Projektowanie i dokumentowanie klas przeznaczonych do dziedziczenia
- Stosowanie interfejsów zamiast klas abstrakcyjnych
- Zastosowanie obiektów funkcyjnych do reprezentowania strategii - wzorzec Strategy
- Stosowanie statycznych klas składowych
Typy ogólne
- Stosowanie typów ogólnych
- Stosowanie metod ogólnych
- Zastosowanie związanych szablonów do zwiększania elastyczności AP
Typy wyliczeniowe i adnotacje
- Użycie typów wyliczeniowych
- Użycie EnumSet zamiast pól bitowych
- Użycie EnumMap zamiast indeksowania kolejnością
- Emulowanie rozszerzalnych typów wyliczeniowych za pomocą interfejsów
- Korzystanie z adnotacji zamiast wzorców nazw
- Spójne użycie adnotacji Override
- Użycie interfejsów znacznikowych do definiowania typów
Metody
- Defensywne kopiowanie
- Rozsądne korzystanie z przeciążania
- Rozsądne korzystanie z metod varargs
- Zwracanie pustych tablic lub kolekcji zamiast wartości null
Programowanie
- Problemy z wydajnością przy łączeniu ciągów znaków
- Odwoływanie się do obiektów poprzez interfejsy
- Stosowanie interfejsów zamiast refleksyjności
Wyjątki
- Stosowanie wyjątków przechwytywanych i wyjątków czasu wykonania
- Wykorzystanie wyjątków standardowych
- Zachowanie atomowości w przypadku błędu
- Dokumentowanie wyjątków zgłaszanych przez metodę
- Udostępnianie danych o błędzie
Współbieżność i serializacja
- Synchronizacja dostępu do wspólnych modyfikowalnych danych
- Stosowanie wykonawców i zadań zamiast wątków
- Stosowanie narzędzi współbieżności zamiast wait i notify
- Dokumentowanie bezpieczeństwa dla wątków
- Grupy wątków
Serializacja
- Implementacja interfejsu Serializable
- Wykorzystanie własnej postaci serializowanej
- Defensywne tworzenie metody readObject
- Stosowanie typów wyliczeniowych zamiast readResolve do kontroli obiektów
- Użycie pośrednika serializacji zamiast serializowanych obiektów - wzorzec Proxy
Czas trwania szkolenia:
3 dni po 8 godzin lekcyjnych