Facebook - konwersja

Java. Efektywne programowanie. Wydanie III - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
17 sierpnia 2018
Format ebooka:
MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
Produkt niedostępny.  Może zainteresuje Cię

Java. Efektywne programowanie. Wydanie III - ebook

Poznaj najlepsze praktyki programowania z użyciem platformy Java

Język Java jest konsekwentnie udoskonalany i unowocześniany dzięki zaangażowaniu wielu ludzi. Nowoczesny język Java staje się coraz bardziej wieloparadygmatowy, co oznacza, że stosowanie najlepszych praktyk w coraz większym stopniu determinuje jakość kodu. Obecnie napisanie kodu, który prawidłowo działa i może być łatwo zrozumiany przez innych programistów, nie wystarczy - należy zbudować program w taki sposób, aby można było go łatwo modyfikować. Jako że Java stała się obszerną i złożoną platformą, konieczne stało się uaktualnienie najlepszych praktyk.

Ta książka jest kolejnym, trzecim wydaniem klasycznego podręcznika programowania w Javie. Poszczególne rozdziały zostały gruntownie przejrzane, zaktualizowane i wzbogacone o sporo ważnych treści. Znalazło się tu wiele wartościowych porad dotyczących organizowania kodu w taki sposób, aby stał się przejrzysty, co ułatwi przyszłe modyfikacje i usprawnienia. Poza takimi zagadnieniami, jak programowanie zorientowane obiektowo czy korzystanie z różnych typów, obszernie omówiono stosowanie lambd i strumieni, zasady obsługi wyjątków, korzystania ze współbieżności i serializacji. Książka składa się z dziewięćdziesięciu tematów pogrupowanych w dwanaście rozdziałów. Taki układ pozwala na szybkie odnalezienie potrzebnego rozwiązania.

W książce między innymi:

  • interfejsy funkcyjne, wyrażenia lambda, referencje do metod oraz strumienie
  • metody domyślne i statyczne w interfejsach
  • wnioskowanie typów
  • korzystanie z @SafeVarargs
  • instrukcja try z zasobami
  • nowe elementy bibliotek Javy

Java: jakość kodu, efektywność działania i przyjemność programowania.

Spis treści

Słowo wstępne (9)

Przedmowa (11)

Podziękowania (15)

Rozdział 1. Wprowadzenie (19)

Rozdział 2. Tworzenie i usuwanie obiektów (23)

  • Temat 1. Tworzenie statycznych metod fabrycznych zamiast konstruktorów (23)
  • Temat 2. Zastosowanie budowniczego do obsługi wielu parametrów konstruktora (28)
  • Temat 3. Wymuszanie właściwości singleton za pomocą prywatnego konstruktora lub typu enum (36)
  • Temat 4. Wykorzystanie konstruktora prywatnego w celu uniemożliwienia utworzenia obiektu (38)
  • Temat 5. Stosuj wstrzykiwanie zależności zamiast odwoływania się do zasobów na sztywno (39)
  • Temat 6. Unikanie powielania obiektów (41)
  • Temat 7. Usuwanie niepotrzebnych referencji do obiektów (45)
  • Temat 8. Unikanie finalizatorów i oczyszczaczy (48)
  • Temat 9. Preferuj konstrukcję try z zasobami zamiast try-finally (54)

Rozdział 3. Metody wspólne dla wszystkich obiektów (57)

  • Temat 10. Zachowanie założeń w trakcie przedefiniowywania metody equals (58)
  • Temat 11. Przedefiniowywanie metody hashCode wraz z equals (70)
  • Temat 12. Przedefiniowywanie metody toString (75)
  • Temat 13. Rozsądne przedefiniowywanie metody clone (78)
  • Temat 14. Implementacja interfejsu Comparable (86)

Rozdział 4. Klasy i interfejsy (93)

  • Temat 15. Ograniczanie dostępności klas i ich składników (93)
  • Temat 16. Stosowanie metod akcesorów zamiast pól publicznych w klasach publicznych (98)
  • Temat 17. Zapewnianie niezmienności obiektu (100)
  • Temat 18. Zastępowanie dziedziczenia kompozycją (107)
  • Temat 19. Projektowanie i dokumentowanie klas przeznaczonych do dziedziczenia (113)
  • Temat 20. Stosowanie interfejsów zamiast klas abstrakcyjnych (119)
  • Temat 21. Projektowanie interfejsów na długie lata (124)
  • Temat 22. Wykorzystanie interfejsów jedynie do definiowania typów (127)
  • Temat 23. Zastępowanie oznaczania klas hierarchią (129)
  • Temat 24. Zalety stosowania statycznych klas składowych (132)
  • Temat 25. Ograniczenie pliku źródłowego do pojedynczej klasy głównego poziomu (135)

Rozdział 5. Typy ogólne (139)

  • Temat 26. Nie korzystaj z typów surowych (139)
  • Temat 27. Eliminowanie ostrzeżeń o braku kontroli (144)
  • Temat 28. Korzystanie z list zamiast tablic (147)
  • Temat 29. Stosowanie typów ogólnych (151)
  • Temat 30. Stosowanie metod ogólnych (156)
  • Temat 31. Zastosowanie związanych szablonów do zwiększania elastyczności API (159)
  • Temat 32. Ostrożne łączenie typów ogólnych i parametrów varargs (166)
  • Temat 33. Wykorzystanie heterogenicznych kontenerów bezpiecznych dla typów (171)

Rozdział 6. Typy wyliczeniowe i adnotacje (177)

  • Temat 34. Użycie typów wyliczeniowych zamiast stałych int (177)
  • Temat 35. Użycie pól instancyjnych zamiast kolejności (188)
  • Temat 36. Użycie EnumSet zamiast pól bitowych (189)
  • Temat 37. Użycie EnumMap zamiast indeksowania kolejnością (191)
  • Temat 38. Emulowanie rozszerzalnych typów wyliczeniowych za pomocą interfejsów (196)
  • Temat 39. Korzystanie z adnotacji zamiast wzorców nazw (200)
  • Temat 40. Spójne użycie adnotacji Override (207)
  • Temat 41. Użycie interfejsów znacznikowych do definiowania typów (210)

Rozdział 7. Lambdy i strumienie (213)

  • Temat 42. Stosuj lambdy zamiast klas anonimowych (213)
  • Temat 43. Wybieraj referencje do metod zamiast lambd (217)
  • Temat 44. Korzystaj ze standardowych interfejsów funkcyjnych (219)
  • Temat 45. Rozważnie korzystaj ze strumieni (223)
  • Temat 46. Stosuj w strumieniach funkcje bez efektów ubocznych (231)
  • Temat 47. Zwracaj kolekcje zamiast strumieni (236)
  • Temat 48. Ostrożnie korzystaj ze strumieni zrównoleglonych (242)

Rozdział 8. Metody (247)

  • Temat 49. Sprawdzanie poprawności parametrów (247)
  • Temat 50. Defensywne kopiowanie (250)
  • Temat 51. Projektowanie sygnatur metod (255)
  • Temat 52. Rozsądne korzystanie z przeciążania (257)
  • Temat 53. Rozsądne korzystanie z metod varargs (263)
  • Temat 54. Zwracanie pustych tablic lub kolekcji zamiast wartości null (265)
  • Temat 55. Rozsądne zwracanie obiektów opcjonalnych (267)
  • Temat 56. Tworzenie komentarzy dokumentujących dla udostępnianych elementów API (272)

Rozdział 9. Programowanie (281)

  • Temat 57. Ograniczanie zasięgu zmiennych lokalnych (281)
  • Temat 58. Stosowanie pętli for-each zamiast tradycyjnych pętli for (284)
  • Temat 59. Poznanie i wykorzystywanie bibliotek (287)
  • Temat 60. Unikanie typów float i double, gdy potrzebne są dokładne wyniki (290)
  • Temat 61. Stosowanie typów prostych zamiast opakowanych typów prostych (292)
  • Temat 62. Unikanie typu String, gdy istnieją bardziej odpowiednie typy (296)
  • Temat 63. Problemy z wydajnością przy łączeniu ciągów znaków (298)
  • Temat 64. Odwoływanie się do obiektów poprzez interfejsy (299)
  • Temat 65. Stosowanie interfejsów zamiast refleksyjności (301)
  • Temat 66. Rozważne wykorzystywanie metod natywnych (304)
  • Temat 67. Unikanie przesadnej optymalizacji (306)
  • Temat 68. Wykorzystanie ogólnie przyjętych konwencji nazewnictwa (309)

Rozdział 10. Wyjątki (313)

  • Temat 69. Wykorzystanie wyjątków w sytuacjach nadzwyczajnych (313)
  • Temat 70. Stosowanie wyjątków przechwytywanych i wyjątków czasu wykonania (316)
  • Temat 71. Unikanie niepotrzebnych wyjątków przechwytywanych (318)
  • Temat 72. Wykorzystanie wyjątków standardowych (320)
  • Temat 73. Zgłaszanie wyjątków właściwych dla abstrakcji (323)
  • Temat 74. Dokumentowanie wyjątków zgłaszanych przez metodę (325)
  • Temat 75. Udostępnianie danych o błędzie (326)
  • Temat 76. Zachowanie atomowości w przypadku błędu (328)
  • Temat 77. Nie ignoruj wyjątków (330)

Rozdział 11. Współbieżność (333)

  • Temat 78. Synchronizacja dostępu do wspólnych modyfikowalnych danych (333)
  • Temat 79. Unikanie nadmiarowej synchronizacji (338)
  • Temat 80. Stosowanie wykonawców, zadań i strumieni zamiast wątków (344)
  • Temat 81. Stosowanie narzędzi współbieżności zamiast wait i notify (346)
  • Temat 82. Dokumentowanie bezpieczeństwa dla wątków (352)
  • Temat 83. Rozsądne korzystanie z późnej inicjalizacji (355)
  • Temat 84. Nie polegaj na harmonogramie wątków (358)

Rozdział 12. Serializacja (361)

  • Temat 85. Stosuj rozwiązania alternatywne wobec serializacji Javy (361)
  • Temat 86. Rozsądne implementowanie interfejsu Serializable (365)
  • Temat 87. Wykorzystanie własnej postaci serializowanej (368)
  • Temat 88. Defensywne tworzenie metody readObject (375)
  • Temat 89. Stosowanie typów wyliczeniowych zamiast readResolve do kontroli obiektów (381)
  • Temat 90. Użycie pośrednika serializacji zamiast serializowanych obiektów (385)

Dodatek A. Tematy odpowiadające drugiemu wydaniu (389)

Dodatek B. Zasoby (393)

Skorowidz (399)

Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-283-4577-5
Rozmiar pliku: 3,4 MB

BESTSELLERY

Kategorie: