Состояние Новый
Счет-фактура Я выставляю счет-фактуру НДС
Язык издания польский
Название Java. Эффективное Программирование.
Автор Joshua Bloch
Издательство Гелион
Обложка мягкая
Материал бумажная книга
Количество страниц Триста пятьдесят два
Год выпуска Две тысячи семнадцать
Вес с индивидуальной упаковкой 0.535 кг
Высота изделия 16 см
Ширина 15.8 см
Номер вопроса Два
Количество 2 штук
Joshua Bloch
Poznaj specyfikę języka Java i zostań mistrzem programowania
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.
Nie wystarczy samo poznanie języka Java. Trzeba wiedzieć, jak z niego efektywnie korzystać!
Przedmowa do drugiego wydania
Przedmowa do pierwszego wydania
Podziękowania do drugiego wydania
Podziękowania do pierwszego wydania
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
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
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
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
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
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
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
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
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
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