Czysty kod w C++17. Oprogramowanie łatwe Czerwionka-Leszczyny

Wzorce i najlepsze praktyki rozwoju łatwego w utrzymaniu oprogramowania w C++17 Język C++ jest wszechstronnym, potężnym językiem programowania, który ma bardzo różne zastosowania. To klasyczne, wciąż udoskonalane i unowocześniane narzędzie. Problemem jednak jest to, że programiści piszący w C++ …

od 35,40 Najbliżej: 16 km

Liczba ofert: 1

Oferta sklepu

Opis

Wzorce i najlepsze praktyki rozwoju łatwego w utrzymaniu oprogramowania w C++17 Język C++ jest wszechstronnym, potężnym językiem programowania, który ma bardzo różne zastosowania. To klasyczne, wciąż udoskonalane i unowocześniane narzędzie. Problemem jednak jest to, że programiści piszący w C++ dość często mają złe nawyki. Nie przestrzegają zasad manifestu Software Craftsmanship, stosują okropną składnię, całkowicie ignorują podstawowe reguły prawidłowego projektowania i pisania oprogramowania, a tworzony przez nich kod, choć często wydajny i szybki, bywa niemal niemożliwy w utrzymaniu. Jeśli chcesz, aby Twój kod C++ stał się optymalny i zyskał wyższą jakość, powinieneś uważnie przestudiować tę książkę. Pisanie dobrego kodu oznacza przyjemniejszą i wydajniejszą pracę. Niezależnie od tego, czy dopiero zaczynasz przygodę z C++, czy jesteś doświadczonym deweloperem, znajdziesz w tej publikacji cenne i przydatne informacje dotyczące zasad pisania kodu. Akronimy KISS, YAGNI czy DRY zyskają dla Ciebie nowe znaczenie! Otrzymasz też mnóstwo przydatnych wskazówek odnoszących się do pisania funkcji, prowadzenia testów, obsługi wyjątków i błędów, a nawet umieszczania komentarzy w kodzie. Na licznych przykładach pokazano, jak pisać zrozumiały, elastyczny, łatwy w konserwacji i wydajny kod w C++. W książce między innymi: Solidne wyjaśnienie zasad pisania czystego kodu w C++ Programowanie funkcyjne i obiektowe Wskazówki dotyczące programowania sterowanego testami (Test Driven Development) Wzorce projektowe i idiomy z C++ Praktyczne wykorzystanie wzorców projektowych podczas programowania Czysty kod C++17: elegancja, prostota i moc. Spis treści: O autorze (9) O recenzencie technicznym (11) Podziękowania (13) Rozdział 1. Wprowadzenie (15) Entropia oprogramowania (16) Czysty kod (17) Dlaczego C++? (18) C++11 - początek nowej ery (18) Dla kogo przeznaczona jest ta książka? (19) Konwencje stosowane w tej książce (19) Ramki (20) Uwagi, wskazówki i ostrzeżenia (20) Przykładowy kod (20) Witryna książki i repozytorium z kodem źródłowym (21) Diagramy UML-a (21) Rozdział 2. Tworzenie siatki bezpieczeństwa (23) Konieczność przeprowadzania testów (23) Wprowadzenie do testów (25) Testy jednostkowe (26) A co z kontrolą jakości? (28) Reguły tworzenia dobrych testów jednostkowych (29) Jakość kodu testów (29) Nazwy testów jednostkowych (29) Niezależność testów jednostkowych (31) Jedna asercja na test (31) Niezależne inicjowanie środowisk testów jednostkowych (32) Pomijanie testów getterów i setterów (32) Pomijanie testów kodu innych programistów (32) Pomijanie testów zewnętrznych systemów (33) A co zrobić z bazą danych? (33) Nie łącz kodu testów z kodem produkcyjnym (33) Testy muszą działać szybko (36) Zaślepki (36) Rozdział 3. Postępuj zgodnie z zasadami (39) Czym są zasady? (39) Zachowaj prostotę, głupku (KISS) (40) Nie będziesz tego potrzebować (YAGNI) (40) Nie powtarzaj się (DRY) (41) Ukrywanie informacji (41) Wysoka spójność (44) Luźne powiązanie (46) Nie przesadzaj z optymalizacją (49) Zasada minimalizowania zaskoczenia (50) Reguła harcerza (50) Rozdział 4. Podstawy czystego C++ (53) Dobre nazwy (54) Nazwy powinny być oczywiste (55) Stosuj nazwy z dziedziny (56) Dobieraj nazwy na odpowiednim poziomie abstrakcji (57) Unikaj nadmiarowości, gdy wymyślasz nazwę (58) Unikaj zagadkowych skrótów (58) Unikaj notacji węgierskiej i przedrostków (59) Unikaj używania tej samej nazwy do różnych celów (60) Komentarze (60) Niech kod opowiada historię (60) Nie komentuj oczywistych rzeczy (61) Nie dezaktywuj kodu za pomocą komentarzy (61) Nie pisz komentarzy blokowych (62) Rzadkie scenariusze, w których komentarze są przydatne (64) Funkcje (67) Jedna rzecz - nie więcej! (70) Twórz małe funkcje (70) Nazwy funkcji (71) Stosuj nazwy opisujące intencje (72) Argumenty i zwracane wartości (72) Liczba argumentów (73) Projekty C++ w dawnym stylu specyficznym dla C (82) Przedkładaj łańcuchy znaków i strumienie z C++ nad dawne łańcuchy char* w stylu języka C (82) Unikaj instrukcji printf(), sprintf(), gets() itd. (84) Przedkładaj kontenery z biblioteki standardowej nad proste tablice w stylu języka C (87) Używanie rzutowania z języka C++ zamiast dawnego rzutowania w stylu języka C (89) Unikaj makr (90) Rozdział 5. Zaawansowane aspekty współczesnego C++ (93) Zarządzanie zasobami (93) Idiom RAII (95) Inteligentne wskaźniki (95) Unikanie bezpośrednich wywołań new i delete (100) Zarządzanie niezależnymi zasobami (101) Warto się czasem gdzieś przenieść (102) Czym jest semantyka przenoszenia? (102) Czym są l-wartości i r-wartości? (103) Referencje do r-wartości (104) Nie wymuszaj wszędzie semantyki przenoszenia (106) Reguła zera (106) Kompilator to Twój współpracownik (110) Automatyczna dedukcja typów (110) Obliczenia na etapie kompilacji (113) Szablony zmiennych (115) Nie dopuszczaj do niezdefiniowanych skutków (116) Programowanie z użyciem typów semantycznych (117) Poznaj używane biblioteki (123) Korzystaj z pliku nagłówkowego (123) Korzystaj z biblioteki Boost (128) Inne biblioteki, które powinieneś znać (129) Prawidłowa obsługa wyjątków i błędów (130) Lepiej zapobiegać niż leczyć (130) Wyjątek jest wyjątkiem - dosłownie (134) Jeśli nie możesz przywrócić stanu, szybko zamknij program (135) Definiuj specyficzne typy wyjątków (135) Zgłaszanie przez wartość i przechwytywanie za pomocą stałej referencji (137) Zwracaj uwagę na właściwą kolejność klauzul catch (137) Rozdział 6. Podejście obiektowe (139) Myślenie obiektowe (140) Abstrakcja - klucz do opanowania złożoności (141) Zasady poprawnego projektowania klas (141) Twórz niewielkie klasy (141) Zasada jednej odpowiedzialności (142) Zasada otwarte - zamknięte (143) Zasada podstawiania Liskov (144) Zasada podziału interfejsu (154) Zasada zależności acyklicznych (156) Zasada odwracania zależności (158) Nie rozmawiaj z nieznajomymi (prawo Demeter) (162) Unikaj "anemicznych" klas (166) Mów zamiast pytać (167) Unikaj statycznych składowych klasy (169) Rozdział 7. Programowanie funkcyjne (171) Czym jest programowanie funkcyjne? (172) Czym jest funkcja? (173) Funkcje czyste i "nieczyste" (174) Programowanie funkcyjne w nowoczesnym C++ (175) Programowanie funkcyjne z użyciem szablonów języka C++ (175) Obiekty podobne do funkcji (funktory) (177) Mechanizm wiązania i nakładki na funkcje (183) Wyrażenia lambda (185) Generyczne wyrażenia lambda (C++14) (187) Funkcje wyższego poziomu (187) Mapowanie, filtrowanie i redukcja (189) Czysty kod w programowaniu funkcyjnym (192) Rozdział 8. Programowanie sterowane testami (195) Wady zwykłych dawnych testów jednostkowych (196) Podejście TDD jako rewolucja (197) Proces pracy w TDD (197) TDD na przykładzie - kata dotyczące liczb rzymskich (200) Zalety TDD (216) Kiedy nie stosować TDD? (217) Rozdział 9. Wzorce projektowe i idiomy (219) Zasady projektowe a wzorce projektowe (220) Wybrane wzorce i sytuacje, w których warto je stosować (220) Wstrzykiwanie zależności (221) Adapter (231) Strategia (233) Polecenie (237) Procesor poleceń (240) Kompozyt (242) Obserwator (245) Fabryka (250) Fasada (252) Klasa Money (253) Obiekt reprezentujący specjalny przypadek (obiekt NULL) (256) Czym jest idiom? (260) Przydatne idiomy języka C++ (260) Dodatek A. Krótki przewodnik po UML-u (271) Diagramy klas (271) Klasa (271) Interfejs (273) Asocjacja (275) Generalizacja (277) Zależność (278) Komponenty (279) Stereotypy (279) Bibliografia (281) Skorowidz (285) O autorze: Stephan Roth jest pełnym pasji coachem, konsultantem i szkoleniowcem specjalizującym się w inżynierii systemów i oprogramowania. Ma doświadczenie jako architekt oprogramowania w obszarach rozpoznania radiowego oraz telekomunikacyjnych systemów wywiadowczych. Zabiera głos na specjalistycznych konferencjach i jest autorem kilku publikacji. To aktywny zwolennik ruchu Software Craftsmanship, którego interesują zasady i praktyki podejścia Clean Code Development.

Specyfikacja

Podstawowe informacje

Autor
  • Stephan Roth
Rok wydania
  • 2018
Format
  • PDF
  • MOBI
  • EPUB
Ilość stron
  • 296
Kategorie
  • Programowanie
Wybrane wydawnictwa
  • Helion