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)