
Zaprojektuj i napisz wydajniejsze oprogramowanie
- Poznaj najlepsze metody stosowania biblioteki STL
- Zaimplementuj wydajne mechanizmy zarządzania pamięcią i zasobami
- Zoptymalizuj kod źródłowy swoich aplikacji
Projektowanie i tworzenie wydajnych aplikacji to sztuka znajdowania kompromisu pomiędzy kosztami a funkcjonalnością, elegancją i łatwością pielęgnacji oraz między elastycznością i nadmierną złożonością. Znalezienie takiego "złotego środka" jest zadaniem wymagającym znajomości najlepszych praktyk programistycznych. Guru języka C++, Herb Sutter, w książce "Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań" przedstawił najistotniejsze zasady stosowania biblioteki standardowej, reguły inżynierii oprogramowania i wiele innych tematów związanych z tworzeniem programów w języku C++. Książka ta jest kontynuacją jego rozważań i rad dla programistów chcących pisać wydajne oprogramowanie.
W książce Herb Sutter koncentruje się na stylu pisania kodu źródłowego. Przedstawia 40 nowych przykładów, dzięki którym dowiesz się nie tylko, co się dzieje w programie, ale także w jaki sposób. Czytając ją, poznasz nowe sposoby stosowania kluczowych elementów języka C++. Każde z zagadnień przedstawione jest w formie zagadki z rozwiązaniem. Dzięki temu lepiej zapamiętujemy metodykę postępowania, co ułatwia wykorzystanie jej w codziennej pracy.
- Zasady programowania uogólnionego
- Niestandardowe zastosowania biblioteki STL
- Bezpieczna obsługa wyjątków
- Reguły projektowania klas
- Efektywne zarządzanie pamięcią
- Optymalizowanie aplikacji pod kątem wydajności
- Unikanie pułapek w kodzie
Jeśli chcesz poprawić stabilność i wydajność swoich programów, sięgnij po kolejny poradnik autorstwa Herba Suttera.
Przedmowa (7)Rozdział 1. Programowanie uogólnione i biblioteka standardowa języka C++ (13)
- Zagadnienie 1. Poprawne i niepoprawne używanie klasy vector (14)
- Zagadnienie 2. Folwark metod formatowania. Część 1. sprintf (21)
- Zagadnienie 3. Folwark metod formatowania. Część 2. Standardowe (lub olśniewające) alternatywy (26)
- Zagadnienie 4. Funkcje składowe biblioteki standardowej (36)
- Zagadnienie 5. Smaczki programowania uogólnionego. Część 1. Podstawy (sic!) (40)
- Zagadnienie 6. Smaczki programowania uogólnionego. Część 2. Wystarczająco ogólne? (43)
- Zagadnienie 7. Dlaczego nie należy specjalizować szablonów funkcji? (49)
- Zagadnienie 8. Zaprzyjaźnianie szablonów (55)
- Zagadnienie 9. Ograniczenia słowa kluczowego export. Część 1. Podstawy (64)
- Zagadnienie 10. Ograniczenia słowa kluczowego export. Część 2. Interakcje, użyteczność i wskazówki (72)
- Zagadnienie 11. Bloki try i catch (84)
- Zagadnienie 12. Bezpieczna obsługa wyjątków - czy warto? (88)
- Zagadnienie 13. Specyfikacja wyjątków z praktycznego punktu widzenia (91)
- Zagadnienie 14. Proszę zachować porządek! (102)
- Zagadnienie 15. Używanie i nadużywanie prawa dostępu (105)
- Zagadnienie 16. (W większości) prywatne (110)
- Zagadnienie 17. Hermetyzacja (118)
- Zagadnienie 18. Funkcje wirtualne (127)
- Zagadnienie 19. Wymuszanie przestrzegania reguł w klasach pochodnych (135)
- Zagadnienie 20. Kontenery w pamięci. Część 1. Poziomy zarządzania pamięcią (147)
- Zagadnienie 21. Kontenery w pamięci. Część 2. Ile miejsca zajmują naprawdę? (150)
- Zagadnienie 22. O new, a przy okazji o throw. Część 1. Oblicza new (157)
- Zagadnienie 23. O new, a przy okazji o throw. Część 2. Praktyczne zagadnienia dotyczące zarządzania pamięcią (164)
- Zagadnienie 24. Optymalizacja za pomocą const? (173)
- Zagadnienie 25. Powrót inline (178)
- Zagadnienie 26. Format danych i wydajność. Część 1. Kiedy w grę wchodzi kompresja (186)
- Zagadnienie 27. Format danych a wydajność. Część 2. Zabawa z bitami (190)
- Zagadnienie 28. Słowa kluczowe, których nie ma (lub, inaczej mówiąc, komentarze) (199)
- Zagadnienie 29. Czy to inicjalizacja? (206)
- Zagadnienie 30. Podwójna lub żadna (210)
- Zagadnienie 31. Kod w amoku (213)
- Zagadnienie 32. Literówki? Język graficzny i inne ciekawostki (218)
- Zagadnienie 33. Operatory, wszędzie operatory (220)
- Zagadnienie 34. Tablice indeksujące (227)
- Zagadnienie 35. Uogólnione wywołania zwrotne (238)
- Zagadnienie 36. Unie konstrukcyjne (246)
- Zagadnienie 37. Rozciąganie monolitów. Część 1. Spojrzenie na std::string (263)
- Zagadnienie 38. Rozciąganie monolitów. Część 2. Rozkład klasy std::string na czynniki (267)
- Zagadnienie 39. Rozciąganie monolitów. Część 3. Odchudzanie klasy std::string (276)
- Zagadnienie 40. Rozciąganie monolitów. Część 4. Powrót klasy std::string (279)
Skorowidz (293)