Efektywne programowanie w języku Java - Helion
Tytuł oryginału: Effective Java Programming Language
Tłumaczenie: Paweł Gonera
ISBN: 83-7197-989-4
stron: 216, Format: B5, okładka: miękka
Data wydania: 2002-11-19
Księgarnia: Helion
Cena książki: 39,90 zł
Java to wspaniaÅ‚e narzÄ™dzie w rÄ™kach programisty. Ale nawet najlepsze narzÄ™dzie może zostać źle użyte. Istnieje wiele książek, które opisujÄ… ten jÄ™zyk programowania, skupiajÄ…c siÄ™ na przedstawieniu jego skÅ‚adni. Ta książka jest zupeÅ‚nie inna. Adresowana do osób znajÄ…cych już JavÄ™, przedstawia 57 praktycznych zasad pisania efektywnego, poprawnego kodu.
Każda wskazówka to oddzielny podrozdziaÅ‚, przedstawiajÄ…cy opis problemu, przykÅ‚ady poprawnego (i bÅ‚Ä™dnego!) kodu, a także historie wziÄ™te z doÅ›wiadczenia autora. DziÄ™ki książce zapoznasz siÄ™ z idiomami wÅ‚aÅ›ciwymi jÄ™zykowi Java oraz z istotnymi z praktycznego punktu widzenia wzorcami projektowymi.
Wskazówki dotyczÄ… miÄ™dzy innymi:
- Tworzenia i usuwania obiektów
- Pisania metod wspólnych dla wielu obiektów
- Klas i interfejsów
- Javowych odpowiedników konstrukcji znanych z C
- Pisania poprawnych metod
- ObsÅ‚ugi wyjÄ…tków
- Korzystania z wÄ…tków
- Serializacji obiektów
O autorze:
Joshua Bloch jest wspóÅ‚autorem wielu bibliotek jÄ™zyka Java, takich jak Java Collections Framework i java.math, a także autorem licznych prac naukowych. [wiÄ™cej...]
Osoby które kupowały "Efektywne programowanie w języku Java", wybierały także:
- Metoda dziel i zwyci 89,00 zł, (26,70 zł -70%)
- Język C. Kurs video. Praktyczne wprowadzenie do programowania 99,00 zł, (29,70 zł -70%)
- Wprowadzenie do Javy. Programowanie i struktury danych. Wydanie XII 193,23 zł, (59,90 zł -69%)
- Spring i Spring Boot. Kurs video. Testowanie aplikacji i bezpiecze 125,42 zł, (45,15 zł -64%)
- Maven. Kurs video. Automatyzacja tworzenia aplikacji w Javie 98,98 zł, (39,59 zł -60%)
Spis treści
Efektywne programowanie w języku Java -- spis treści
Słowo wstępne (7)
Przedmowa (9)
Wprowadzenie (11)
RozdziaÅ‚ 1. Tworzenie i usuwanie obiektów (15)
- Temat 1. Tworzenie statycznych metod factory zamiast konstruktorów (15)
- Temat 2. Wymuszanie właściwości singleton za pomocą prywatnego konstruktora (18)
- Temat 3. Wykorzystanie konstruktora prywatnego w celu uniemożliwienia utworzenia obiektu (20)
- Temat 4. Unikanie powielania obiektów (21)
- Temat 5. Usuwanie niepotrzebnych referencji do obiektów (24)
- Temat 6. Unikanie finalizatorów (27)
RozdziaÅ‚ 2. Metody wspólne dla wszystkich obiektów (31)
- Temat 7. Zachowanie założeń w trakcie przedefiniowywania metody equals (31)
- Temat 8. Przedefiniowywanie metody hashCode wraz z equals (39)
- Temat 9. Przedefiniowywanie metody toString (44)
- Temat 10. RozsÄ…dne przedefiniowywanie metody clone (46)
- Temat 11. Implementacja interfejsu Comparable (53)
Rozdział 3. Klasy i interfejsy (59)
- Temat 12. Ograniczanie dostÄ™pnoÅ›ci klas i ich skÅ‚adników (59)
- Temat 13. Zapewnianie niezmienności obiektu (62)
- Temat 14. Zastępowanie dziedziczenia kompozycją (69)
- Temat 15. Projektowanie i dokumentowanie klas przeznaczonych do dziedziczenia (74)
- Temat 16. Stosowanie interfejsów zamiast klas abstrakcyjnych (78)
- Temat 17. Wykorzystanie interfejsów jedynie do definiowania typów (83)
- Temat 18. Zalety stosowania statycznych klas składowych (84)
Rozdział 4. Odpowiedniki konstrukcji języka C (89)
- Temat 19. Zastępowanie struktur klasami (89)
- Temat 20. Zamiana unii na hierarchiÄ™ klas (91)
- Temat 21. Zastępowanie konstrukcji enum za pomocą klas (94)
- Temat 22. ZastÄ™powanie wskaźników do funkcji za pomocÄ… klas i interfejsów (103)
Rozdział 5. Metody (107)
- Temat 23. Sprawdzanie poprawnoÅ›ci parametrów (107)
- Temat 24. Defensywne kopiowanie (109)
- Temat 25. Projektowanie sygnatur metod (112)
- Temat 26. Rozsądne korzystanie z przeciążania (114)
- Temat 27. Zwracanie pustych tablic zamiast wartości null (118)
- Temat 28. Tworzenie komentarzy dokumentujÄ…cych dla wszystkich udostÄ™pnianych elementów API (120)
Rozdział 6. Programowanie (125)
- Temat 29. Ograniczanie zasięgu zmiennych lokalnych (125)
- Temat 30. Poznanie i wykorzystywanie bibliotek (128)
- Temat 31. Unikanie typów float i double, gdy potrzebne sÄ… dokÅ‚adne wyniki (131)
- Temat 32. Unikanie typu String, gdy istniejÄ… bardziej odpowiednie typy (133)
- Temat 33. Problemy z wydajnoÅ›ciÄ… przy Å‚Ä…czeniu ciÄ…gów znaków (135)
- Temat 34. OdwoÅ‚ywanie siÄ™ do obiektów poprzez interfejsy (136)
- Temat 35. Stosowanie interfejsów zamiast refleksyjnoÅ›ci (137)
- Temat 36. Rozważne wykorzystywanie metod natywnych (140)
- Temat 37. Unikanie optymalizacji (141)
- Temat 38. Wykorzystanie ogólnie przyjÄ™tych konwencji nazewnictwa (144)
Rozdział 7. Wyjątki (147)
- Temat 39. Wykorzystanie wyjÄ…tków w sytuacjach nadzwyczajnych (147)
- Temat 40. Stosowanie wyjÄ…tków przechwytywalnych i wyjÄ…tków czasu wykonania (149)
- Temat 41. Unikanie niepotrzebnych wyjÄ…tków przechwytywalnych (151)
- Temat 42. Wykorzystanie wyjÄ…tków standardowych (153)
- Temat 43. ZgÅ‚aszanie wyjÄ…tków wÅ‚aÅ›ciwych dla abstrakcji (155)
- Temat 44. Dokumentowanie wyjÄ…tków zgÅ‚aszanych przez metodÄ™ (157)
- Temat 45. Udostępnianie danych o błędzie (158)
- Temat 46. Zachowanie atomowości w przypadku błędu (159)
- Temat 47. Nie ignoruj wyjÄ…tków (161)
Rozdział 8. Wątki (163)
- Temat 48. Synchronizacja dostÄ™pu do wspólnych modyfikowalnych danych (163)
- Temat 49. Unikanie nadmiarowej synchronizacji (168)
- Temat 50. Nigdy nie wywołuj wait poza pętlą (172)
- Temat 51. Unikanie korzystania z systemowego szeregowania wÄ…tków (174)
- Temat 52. Dokumentowanie bezpieczeÅ„stwa dla wÄ…tków (177)
- Temat 53. Unikanie grup wÄ…tków (180)
Rozdział 9. Serializacja (181)
- Temat 54. Implementowanie interfejsu Serializable (181)
- Temat 55. Wykorzystanie własnej postaci serializowanej (185)
- Temat 56. Defensywne tworzenie metody readObject (191)
- Temat 57. Tworzenie metody readResolve (196)
Dodatek A Zasoby (199)
Skorowidz (203)