Java. Efektywne programowanie. Wydanie II - ebook
Java. Efektywne programowanie. Wydanie II - ebook
Poznaj specyfikę języka Java i zostań mistrzem programowania
- Jak korzystać z bibliotek języka Java?
- Jak pisać funkcjonalny i klarowny kod?
- Jak stworzyć profesjonalny i efektowny program?
Język Java jest językiem obiektowym z dziedziczeniem jednobazowym. Wewnątrz każdej metody korzysta on ze zorientowanego na instrukcje stylu kodowania. Aby dobrze poznać jakikolwiek język, należy nauczyć się posługiwać jego regułami, zasadami i składnią -- podobnie jest z językiem programowania. Jeśli chcesz zyskać możliwość efektywnego programowania w języku Java, powinieneś poznać struktury danych, operacje i udogodnienia, oferowane przez biblioteki standardowe, a także często stosowane i efektywne sposoby tworzenia kodu. Całą potrzebną Ci wiedzę znajdziesz właśnie w tym podręczniku.
W książce "Java. Efektywne programowanie" w sposób zrozumiały i klarowny przedstawiono zasady opisujące mechanizmy używane w najlepszych technikach programowania. Ten podręcznik podpowie Ci, jak najbardziej racjonalnie korzystać z języka Java oraz jego podstawowych bibliotek. Dowiesz się, jak stosować wyjątki przechwytywalne i wyjątki czasu wykonania, poznasz także zalety stosowania statycznych klas składowych. Opanujesz metody sprawdzania poprawności parametrów i projektowania sygnatur oraz wszelkie instrukcje, które pozwolą Ci na wydajne i profesjonalne programowanie.
- Tworzenie i usuwanie obiektów
- Klasy i interfejsy
- Zapewnianie niezmienności obiektu
- Projektowanie i dokumentowanie klas przeznaczonych do dziedziczenia
- Zalety stosowania statycznych klas składowych
- Typy ogólne
- Typy wyliczeniowe i adnotacje
- Metody
- Programowanie
- Wykorzystanie ogólnie przyjętych konwencji nazewnictwa
- Wyjątki
- Współbieżność i serializacja
- Dokumentowanie bezpieczeństwa dla wątków
Nie wystarczy samo poznanie języka Java. Trzeba wiedzieć, jak z niego efektywnie korzystać!
Spis treści
- Opinie o pierwszym wydaniu
- Słowo wstępne
- Przedmowa
- Przedmowa do drugiego wydania
- Przedmowa do pierwszego wydania
- Podziękowania
- Podziękowania do drugiego wydania
- Podziękowania do pierwszego wydania
- 1 Wprowadzenie
- 2 Tworzenie i usuwanie obiektów
- Temat 1. Tworzenie statycznych metod factory zamiast konstruktorów
- Temat 2. Zastosowanie budowniczego do obsługi wielu parametrów konstruktora
- Temat 3. Wymuszanie właściwości singleton za pomocą prywatnego konstruktora
- Temat 4. Wykorzystanie konstruktora prywatnego w celu uniemożliwienia utworzenia obiektu
- Temat 5. Unikanie powielania obiektów
- Temat 6. Usuwanie niepotrzebnych referencji do obiektów
- Temat 7. Unikanie finalizatorów
- 3 Metody wspólne dla wszystkich obiektów
- Temat 8. Zachowanie założeń w trakcie przedefiniowywania metody equals
- Temat 9. Przedefiniowywanie metody hashCode wraz z equals
- Temat 10. Przedefiniowywanie metody toString
- Temat 11. Rozsądne przedefiniowywanie metody clone
- Temat 12. Implementacja interfejsu Comparable
- 4 Klasy i interfejsy
- Temat 13. Ograniczanie dostępności klas i ich składników
- Temat 14. Stosowanie metod akcesorów zamiast pól publicznych w klasach publicznych
- Temat 15. Zapewnianie niezmienności obiektu
- Temat 16. Zastępowanie dziedziczenia kompozycją
- Temat 17. Projektowanie i dokumentowanie klas przeznaczonych do dziedziczenia
- Temat 18. Stosowanie interfejsów zamiast klas abstrakcyjnych
- Temat 19. Wykorzystanie interfejsów jedynie do definiowania typów
- Temat 20. Zastępowanie oznaczania klas hierarchią
- Temat 21. Zastosowanie obiektów funkcyjnych do reprezentowania strategii
- Temat 22. Zalety stosowania statycznych klas składowych
- 5 Typy ogólne
- Temat 23. Nie korzystaj z typów surowych w nowym kodzie
- Temat 24. Eliminowanie ostrzeżeń o braku kontroli
- Temat 25. Korzystanie z list zamiast tablic
- Temat 26. Stosowanie typów ogólnych
- Temat 27. Stosowanie metod ogólnych
- Temat 28. Zastosowanie związanych szablonów do zwiększania elastyczności API
- Temat 29. Wykorzystanie heterogenicznych kontenerów bezpiecznych dla typów
- 6 Typy wyliczeniowe i adnotacje
- Temat 30. Użycie typów wyliczeniowych zamiast stałych int
- Temat 31. Użycie pól instancyjnych zamiast kolejności
- Temat 32. Użycie EnumSet zamiast pól bitowych
- Temat 33. Użycie EnumMap zamiast indeksowania kolejnością
- Temat 34. Emulowanie rozszerzalnych typów wyliczeniowych za pomocą interfejsów
- Temat 35. Korzystanie z adnotacji zamiast wzorców nazw
- Temat 36. Spójne użycie adnotacji Override
- Temat 37. Użycie interfejsów znacznikowych do definiowania typów
- 7 Metody
- Temat 38. Sprawdzanie poprawności parametrów
- Temat 39. Defensywne kopiowanie
- Temat 40. Projektowanie sygnatur metod
- Temat 41. Rozsądne korzystanie z przeciążania
- Temat 42. Rozsądne korzystanie z metod varargs
- Temat 43. Zwracanie pustych tablic lub kolekcji zamiast wartości null
- Temat 44. Tworzenie komentarzy dokumentujących dla wszystkich udostępnianych elementów API
- 8 Programowanie
- Temat 45. Ograniczanie zasięgu zmiennych lokalnych
- Temat 46. Stosowanie pętli for-each zamiast tradycyjnych pętli for
- Temat 47. Poznanie i wykorzystywanie bibliotek
- Temat 48. Unikanie typów float i double, gdy potrzebne są dokładne wyniki
- Temat 49. Stosowanie typów prostych zamiast opakowanych typów prostych
- Temat 50. Unikanie typu String, gdy istnieją bardziej odpowiednie typy
- Temat 51. Problemy z wydajnością przy łączeniu ciągów znaków
- Temat 52. Odwoływanie się do obiektów poprzez interfejsy
- Temat 53. Stosowanie interfejsów zamiast refleksyjności
- Temat 54. Rozważne wykorzystywanie metod natywnych
- Temat 55. Unikanie optymalizacji
- Temat 56. Wykorzystanie ogólnie przyjętych konwencji nazewnictwa
- 9 Wyjątki
- Temat 57. Wykorzystanie wyjątków w sytuacjach nadzwyczajnych
- Temat 58. Stosowanie wyjątków przechwytywanych i wyjątków czasu wykonania
- Temat 59. Unikanie niepotrzebnych wyjątków przechwytywanych
- Temat 60. Wykorzystanie wyjątków standardowych
- Temat 61. Zgłaszanie wyjątków właściwych dla abstrakcji
- Temat 62. Dokumentowanie wyjątków zgłaszanych przez metodę
- Temat 63. Udostępnianie danych o błędzie
- Temat 64. Zachowanie atomowości w przypadku błędu
- Temat 65. Nie ignoruj wyjątków
- 10 Współbieżność
- Temat 66. Synchronizacja dostępu do wspólnych modyfikowalnych danych
- Temat 67. Unikanie nadmiarowej synchronizacji
- Temat 68. Stosowanie wykonawców i zadań zamiast wątków
- Temat 69. Stosowanie narzędzi współbieżności zamiast wait i notify
- Temat 70. Dokumentowanie bezpieczeństwa dla wątków
- Temat 71. Rozsądne korzystanie z późnej inicjalizacji
- Temat 72. Nie polegaj na harmonogramie wątków
- Temat 73. Unikanie grup wątków
- 11 Serializacja
- Temat 74. Rozsądne implementowanie interfejsu Serializable
- Temat 75. Wykorzystanie własnej postaci serializowanej
- Temat 76. Defensywne tworzenie metody readObject
- Temat 77. Stosowanie typów wyliczeniowych zamiast readResolve do kontroli obiektów
- Temat 78. Użycie pośrednika serializacji zamiast serializowanych obiektów
- A Tematy odpowiadające pierwszemu wydaniu
- B Zasoby
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-3312-3 |
Rozmiar pliku: | 2,7 MB |