C++. 50 efektywnych sposobów na udoskonalenie Twoich programów - Helion

Tytuł oryginału: Effective C++: 50 Specific Ways to Improve Your Programs and Design
Tłumaczenie: Mikołaj Szczepaniak
ISBN: 83-7361-345-5
stron: 248, Format: B5, okładka: miękka
Data wydania: 2003-11-27
Księgarnia: Helion
Cena książki: 29,40 zł (poprzednio: 49,00 zł)
Oszczędzasz: 40% (-19,60 zł)
Pierwsze wydanie książki "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" zostało sprzedane w nakładzie 100 000 egzemplarzy i zostało przetłumaczone na cztery języki. Nietrudno zrozumieć, dlaczego tak się stało. Scott Meyers w charakterystyczny dla siebie, praktyczny sposób przedstawił wiedzę typową dla ekspertów -- czynności, które niemal zawsze wykonują lub czynności, których niemal zawsze unikają, by tworzyć prosty, poprawny i efektywny kod. Każda z zawartych w tej książce pięćdziesięciu wskazówek jest streszczeniem metod pisania lepszych programów w C++, zaś odpowiednie rozważania są poparte konkretnymi przykładami. Z myślą o nowym wydaniu, autor opracował od początku wszystkie opisywane w tej książce wskazówki. Wynik jego pracy jest wyjątkowo zgodny z międzynarodowym standardem C++, technologią aktualnych kompilatorów oraz najnowszymi trendami w świecie rzeczywistych aplikacji C++.
Do najważniejszych zalet książki "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" należą:
- Eksperckie porady dotyczące projektowania zorientowanego obiektowo, projektowania klas i właściwego stosowania technik dziedziczenia
- Analiza standardowej biblioteki C++, włącznie z wpływem standardowej biblioteki szablonów oraz klas podobnych do string i vector na strukturę dobrze napisanych programów
- Rozważania na temat najnowszych możliwości języka C++: inicjalizacji stałych wewnątrz klas, przestrzeni nazw oraz szablonów składowych
- Wiedza będąca zwykle w posiadaniu wyłącznie doświadczonych programistów
Książka "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" pozostaje jedną z najważniejszych publikacji dla każdego programisty pracującego z C++.
Spis treści
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów -- spis treści
Przedmowa (7)
Podziękowania (11)
Wstęp (15)
Przejście od języka C do C++ (27)
- Sposób 1. Wybieraj const i inline zamiast #define (28)
- Sposób 2. Wybieraj
zamiast (31) - Sposób 3. Wybieraj new i delete zamiast malloc i free (33)
- Sposób 4. Stosuj komentarze w stylu C++ (34)
Zarządzanie pamięcią (37)
- Sposób 5. Używaj tych samych form w odpowiadających sobie zastosowaniach operatorów new i delete (38)
- Sposób 6. Używaj delete w destruktorach dla składowych wskaźnikowych (39)
- Sposób 7. Przygotuj się do działania w warunkach braku pamięci (40)
- Sposób 8. Podczas pisania operatorów new i delete trzymaj się istniejącej konwencji (48)
- Sposób 9. Unikaj ukrywania "normalnej" formy operatora new (51)
- Sposób 10. Jeśli stworzyłeś własny operator new, opracuj także własny operator delete (53)
Konstruktory, destruktory i operatory przypisania (61)
- Sposób 11. Deklaruj konstruktor kopiujący i operator przypisania dla klas z pamięcią przydzielaną dynamicznie (61)
- Sposób 12. Wykorzystuj konstruktory do inicjalizacji, a nie przypisywania wartości (64)
- Sposób 13. Umieszczaj składowe na liście inicjalizacji w kolejności zgodnej z kolejnością ich deklaracji (69)
- Sposób 14. Umieszczaj w klasach bazowych wirtualne destruktory (71)
- Sposób 15. Funkcja operator= powinna zwracać referencję do *this (76)
- Sposób 16. Wykorzystuj operator= do przypisywania wartości do wszystkich składowych klasy (79)
- Sposób 17. Sprawdzaj w operatorze przypisania, czy nie przypisujesz wartości samej sobie (82)
Klasy i funkcje - projekt i deklaracja (87)
- Sposób 18. Staraj się dążyć do kompletnych i minimalnych interfejsów klas (89)
- Sposób 19. Rozróżniaj funkcje składowe klasy, funkcje niebędące składowymi klasy i funkcje zaprzyjaźnione (93)
- Sposób 20. Unikaj deklarowania w interfejsie publicznym składowych reprezentujących dane (98)
- Sposób 21. Wykorzystuj stałe wszędzie tam, gdzie jest to możliwe (100)
- Sposób 22. Stosuj przekazywanie obiektów przez referencje, a nie przez wartości (106)
- Sposób 23. Nie próbuj zwracać referencji, kiedy musisz zwrócić obiekt (109)
- Sposób 24. Wybieraj ostrożnie pomiędzy przeciążaniem funkcji a domyślnymi wartościami parametrów (113)
- Sposób 25. Unikaj przeciążania funkcji dla wskaźników i typów numerycznych (117)
- Sposób 26. Strzeż się niejednoznaczności (120)
- Sposób 27. Jawnie zabraniaj wykorzystywania niejawnie generowanych funkcji składowych, których stosowanie jest niezgodne z Twoimi założeniami (123)
- Sposób 28. Dziel globalną przestrzeń nazw (124)
Implementacja klas i funkcji (131)
- Sposób 29. Unikaj zwracania "uchwytów" do wewnętrznych danych (132)
- Sposób 30. Unikaj funkcji składowych zwracających zmienne wskaźniki lub referencje do składowych, które są mniej dostępne od tych funkcji (136)
- Sposób 31. Nigdy nie zwracaj referencji do obiektu lokalnego ani do wskaźnika zainicjalizowanego za pomocą operatora new wewnątrz tej samej funkcji (139)
- Sposób 32. Odkładaj definicje zmiennych tak długo, jak to tylko możliwe (142)
- Sposób 33. Rozważnie stosuj atrybut inline (144)
- Sposób 34. Ograniczaj do minimum zależności czasu kompilacji między plikami (150)
Dziedziczenie i projektowanie zorientowane obiektowo (159)
- Sposób 35. Dopilnuj, by publiczne dziedziczenie modelowało relację "jest" (160)
- Sposób 36. Odróżniaj dziedziczenie interfejsu od dziedziczenia implementacji (166)
- Sposób 37. Nigdy nie definiuj ponownie dziedziczonych funkcji niewirtualnych (174)
- Sposób 38. Nigdy nie definiuj ponownie dziedziczonej domyślnej wartości parametru (176)
- Sposób 39. Unikaj rzutowania w dół hierarchii dziedziczenia (178)
- Sposób 40. Modelując relacje posiadania ("ma") i implementacji z wykorzystaniem, stosuj podział na warstwy (186)
- Sposób 41. Rozróżniaj dziedziczenie od stosowania szablonów (189)
- Sposób 42. Dziedziczenie prywatne stosuj ostrożnie (193)
- Sposób 43. Dziedziczenie wielobazowe stosuj ostrożnie (199)
- Sposób 44. Mów to, o co czym naprawdę myślisz. Zdawaj sobie sprawę z tego, co mówisz (213)
Rozmaitości (215)
- Sposób 45. Miej świadomość, które funkcje są niejawnie tworzone i wywoływane przez C++ (215)
- Sposób 46. Wykrywanie błędów kompilacji i łączenia jest lepsze od wykrywania błędów podczas wykonywania programów (219)
- Sposób 47. Upewnij się, że nielokalne obiekty statyczne są inicjalizowane przed ich użyciem (222)
- Sposób 48. Zwracaj uwagę na ostrzeżenia kompilatorów (226)
- Sposób 49. Zapoznaj się ze standardową biblioteką C++ (227)
- Sposób 50. Pracuj bez przerwy nad swoją znajomością C++ (234)
Skorowidz (239)