Czysty kod w Pythonie. Twórz wydajny Zagórów

4,5
1 opinia

Popularność Pythona, ulubionego języka programistów i naukowców, stale rośnie. Jest on bowiem łatwy do nauczenia się: nawet początkujący programista może napisać działający kod. W efekcie, mimo że Python pozwala na pisanie kodu przejrzystego i prostego w konserwacji, zdarzają się przypadki kodu źle …

od 54,99 Najbliżej: 24 km

Liczba ofert: 1

Oferta sklepu

Opis

Popularność Pythona, ulubionego języka programistów i naukowców, stale rośnie. Jest on bowiem łatwy do nauczenia się: nawet początkujący programista może napisać działający kod. W efekcie, mimo że Python pozwala na pisanie kodu przejrzystego i prostego w konserwacji, zdarzają się przypadki kodu źle zorganizowanego, nieczytelnego i praktycznie nietestowalnego. Jedną z przyczyn tego stanu rzeczy jest tendencja niektórych programistów do pisania kodu bez czytelnej struktury. Zidentyfikowanie takich problemów i ich rozwiązywanie nie jest łatwym zadaniem. Dzięki tej książce nauczysz się korzystać z kilku narzędzi służących do zarządzania projektami napisanymi w Pythonie. Dowiesz się, czym się charakteryzuje czysty kod i jakie techniki umożliwiają tworzenie czytelnego i wydajnego kodu. Przekonasz się, że do tego celu wystarczą standardowa biblioteka Pythona i zestaw najlepszych praktyk programistycznych. Opisano tu szczegóły programowania obiektowego w Pythonie wraz z zastosowaniem deskryptorów i generatorów. Zaprezentowano również zasady testowania oprogramowania i sposoby rozwiązywania problemów poprzez implementację wzorców projektowych w kodzie. Pokazano też, jak można podzielić monolityczną aplikację na mikrousługi, by otrzymać solidną architekturę aplikacji. W książce między innymi: konfiguracja wydajnego środowiska programistycznego tworzenie zaawansowanych projektów obiektowych techniki eliminacji zdublowanego kodu i tworzenie rozbudowanych abstrakcji zastosowanie dekoratorów i deskryptorów skuteczna refaktoryzacja kodu budowa solidnej architektury opartej na czystym kodzie Pythona Czysty kod w Pythonie. Tylko taki warto pisać! Spis treści: O autorze O recenzencie Przedmowa Dla kogo jest ta książka? Co zawiera ta książka? Jak najlepiej wykorzystać tę książkę? Pobieranie plików z przykładowym kodem Stosowane konwencje 1. Wprowadzenie, formatowanie kodu i narzędzia Wprowadzenie Znaczenie terminu czysty kod Znaczenie posiadania czystego kodu Kilka wyjątków Formatowanie kodu Przestrzeganie przewodnika stylu kodowania w projekcie Dokumentacja Komentarze do kodu Docstringi Adnotacje Czy adnotacje zastępują docstringi? Narzędzia Sprawdzanie spójności typów Ogólne sprawdzanie poprawności w kodzie Formatowanie automatyczne Konfiguracja automatycznych kontroli Podsumowanie Materiały referencyjne 2. Kod pythoniczny Indeksy i wycinki Tworzenie własnych sekwencji Menedżery kontekstu Implementacja menedżerów kontekstu Wyrażenia składane i wyrażenia przypisania Właściwości, atrybuty i różne typy metod obiektów Znaki podkreślenia w Pythonie Właściwości Tworzenie klas o bardziej zwartej składni Obiekty iterowalne Tworzenie obiektów iterowalnych Tworzenie sekwencji Obiekty kontenerowe Dynamiczne atrybuty obiektów Obiekty wywoływalne Podsumowanie metod magicznych Haczyki Pythona Mutowalne argumenty domyślne Rozszerzanie typów wbudowanych Krótkie wprowadzenie do kodu asynchronicznego Podsumowanie Materiały referencyjne 3. Ogólne cechy dobrego kodu Projektowanie według kontraktu Warunki wstępne Warunki końcowe Kontrakty pythoniczne Projektowanie według kontraktu wnioski Programowanie defensywne Obsługa błędów Podstawianie wartości Obsługa wyjątków Obsługa wyjątków na odpowiednim poziomie abstrakcji Nie ujawniaj śladów stosu użytkownikom końcowym Unikaj pustych bloków except Dołącz oryginalny wyjątek Używanie asercji w Pythonie Podział obowiązków Spójność i sprzężenie Akronimy DRY/OAOO YAGNI KIS EAFP/LBYL Dziedziczenie w Pythonie Kiedy zastosowanie dziedziczenia jest dobrą decyzją? Antywzorce dziedziczenia Wielokrotne dziedziczenie w Pythonie Kolejność rozwiązywania metod (MRO) Domieszki Argumenty funkcji i metod Jak działają argumenty funkcji w Pythonie? Jak argumenty są kopiowane do funkcji? Zmienna liczba argumentów Argumenty wyłącznie pozycyjne Argumenty wyłącznie kluczowe Liczba argumentów w funkcjach Argumenty funkcji a sprzężenia Sygnatury kompaktowych funkcji, które przyjmują zbyt wiele argumentów Uwagi końcowe dotyczące dobrych praktyk projektowania oprogramowania Ortogonalność w oprogramowaniu Strukturyzacja kodu Podsumowanie Materiały referencyjne 4. Zasady SOLID Zasada pojedynczej odpowiedzialności Klasa mająca zbyt wiele obowiązków Podział obowiązków Zasada otwarty-zamknięty Przykład zagrożeń dla utrzymania kodu w przypadku nieprzestrzegania zasady OCP Refaktoryzacja systemu obsługi zdarzeń w celu uzyskania rozszerzalności Rozbudowa systemu zdarzeń Końcowe przemyślenia na temat OCP Zasada podstawiania Liskov Wykrywanie problemów dotyczących zasady LSP za pomocą narzędzi Wykorzystanie narzędzia mypy do wykrywania nieprawidłowych sygnatur metod Wykrywanie niezgodnych sygnatur za pomocą programu pylint Bardziej subtelne przypadki naruszeń zasady LSP Uwagi na temat LSP Segregacja interfejsów Interfejs, który dostarcza zbyt wiele Im mniejszy interfejs, tym lepiej Jak mały powinien być interfejs? Odwracanie zależności Przypadek sztywnych zależności Odwracanie zależności Wstrzykiwanie zależności Podsumowanie Bibliografia 5. Korzystanie z dekoratorów do usprawniania kodu Czym są dekoratory w Pythonie? Dekoratory funkcji Dekoratory klas Inne rodzaje dekoratorów Bardziej zaawansowane dekoratory Przekazywanie argumentów do dekoratorów Dekoratory z zagnieżdżonymi funkcjami Obiekty dekoratory Dekoratory z wartościami domyślnymi Dekoratory dla podprogramów Rozszerzona składnia dekoratorów Dobre zastosowania dla dekoratorów Dostosowywanie sygnatur funkcji Walidacja parametrów Śledzenie kodu Skuteczne dekoratory unikanie typowych błędów Zachowywanie danych o oryginalnym opakowanym obiekcie Obsługa skutków ubocznych w dekoratorach Nieprawidłowa obsługa skutków ubocznych w dekoratorze Dekoratory z pożądanymi skutkami ubocznymi Tworzenie dekoratorów, które będą działać dla każdego rodzaju obiektów Dekoratory a czysty kod Kompozycja zamiast dziedziczenia Zasada DRY z wykorzystaniem dekoratorów Dekoratory a podział odpowiedzialności Analiza dobrych dekoratorów Podsumowanie Bibliografia 6. Pełniejsze wykorzystywanie obiektów dzięki deskryptorom Pierwsze spojrzenie na deskryptory Oprzyrządowanie związane z deskryptorami Opis metod protokołu deskryptora Metoda get Metoda set Metoda delete Metoda set name Rodzaje deskryptorów Deskryptory niezwiązane z danymi Deskryptory danych Deskryptory w praktyce Zastosowanie deskryptorów Pierwsza próba. Bez użycia deskryptorów Implementacja idiomatyczna Różne formy implementacji deskryptorów Problem współdzielonego stanu Dostęp do słownika obiektu Korzystanie ze słabych referencji Więcej uwag na temat deskryptorów Wielokrotne wykorzystanie kodu Alternatywa dla dekoratorów klas Analiza deskryptorów W jaki sposób Python wewnętrznie używa deskryptorów? Funkcje i metody Wbudowane dekoratory dla metod Gniazda Implementacja deskryptorów w dekoratorach Uwagi końcowe na temat deskryptorów Interfejs deskryptorów Obiektowy projekt deskryptorów Adnotacje typów dla deskryptorów Podsumowanie Bibliografia 7. Generatory, iteratory i programowanie asynchroniczne Wymagania techniczne Tworzenie generatorów Pierwsze spojrzenie na generatory Wyrażenia generatorowe Idiomatyczne iteracje Idiomy iteracji Funkcja next() Korzystanie z generatora Itertools Upraszczanie kodu za pomocą iteratorów Powtarzające się iteracje Pętle zagnieżdżone Wzorzec Iterator w Pythonie Interfejs iteracji Obiekty sekwencji jako obiekty iterowalne Podprogramy Metody interfejsu generatora close() throw(typ_wyjątku[, wartość_wyjątku[, ślad_wyjątku]]) send(wartość) Bardziej zaawansowane podprogramy Zwracanie wartości w podprogramach Delegowanie zadań do mniejszych podprogramów składnia yield from Najprostsze wykorzystanie składni yield from Przechwytywanie wartości zwracanej przez podgenerator Wysyłanie danych do podgeneratora i odbieranie ich stamtąd Programowanie asynchroniczne Magiczne metody asynchroniczne Asynchroniczne menedżery kontekstu Inne metody magiczne Iteracja asynchroniczna Generatory asynchroniczne Podsumowanie Bibliografia 8. Testy jednostkowe i refaktoryzacja Zasady projektowania a testy jednostkowe Uwaga na temat innych form automatycznych testów Testy jednostkowe a zwinne wytwarzanie oprogramowania Testy jednostkowe a projektowanie oprogramowania Definiowanie granic testowania Narzędzia testowania Frameworki i biblioteki do testów jednostkowych unittest Testy sparametryzowane pytest Proste przypadki testowe dla modułu pytest Testy sparametryzowane Fikstury Pokrycie kodu testami Konfigurowanie modułu do badania pokrycia kodu testami Zastrzeżenia do pokrycia kodu testami Obiekty mock Ostrzeżenie przed łataniem i obiektami mock Korzystanie z obiektów mock Refaktoryzacja Ewolucje kodu Kod produkcyjny nie jest jedynym, który ewoluuje Więcej o testowaniu Testowanie oparte na właściwościach Testowanie mutacji Typowe motywy w testowaniu Wartości graniczne Klasy równoważności Przypadki brzegowe Krótkie wprowadzenie do techniki TDD Podsumowanie Bibliografia 9. Typowe wzorce projektowe Zagadnienia dotyczące wzorców projektowych w Pythonie Wzorce projektowe w praktyce Wzorce kreacyjne Fabryki Singleton i Stan współdzielony (Monostat) Stan współdzielony (Monostat) Wzorzec Borga Budowniczy Wzorce strukturalne Adapter Kompozyt Dekorator Fasada Wzorce behawioralne Łańcuch odpowiedzialności Metoda szablonowa Polecenie Stan Pusty obiekt Końcowe przemyślenia dotyczące wzorców projektowych Wpływ zastosowania wzorców na projekt Wzorce projektowe jako teoria Nazwy w modelach Podsumowanie Bibliografia 10. Czysta architektura Od czystego kodu do czystej architektury Podział odpowiedzialności Aplikacje monolityczne a mikrousługi Abstrakcje Komponenty oprogramowania Pakiety Zarządzanie zależnościami Inne problemy dotyczące zarządzania zależnościami Wersje artefaktów Kontenery Docker Przypadek użycia Kod Modele domen Wywoływanie z aplikacji Adaptery Usługi Analiza Przepływ zależności Ograniczenia Testowalność Ujawnianie intencji Podsumowanie Bibliografia Podsumowanie końcowe O autorze: Mariano Anaya jest doświadczonym inżynierem oprogramowania. Tworzy oprogramowanie i wspiera innych programistów. Zajmuje się architekturą oprogramowania, programowaniem funkcyjnym i systemami rozproszonymi. Był prelegentem na konferencjach EuroPython w latach 2016 i 2017, a także FOSDEM w 2019 roku.

Specyfikacja

Podstawowe informacje

Autor
  • Błażej Witkowski
Wybrane wydawnictwa
  • Helion
Okładka
  • Miękka
Rok wydania
  • 2022
Ilość stron
  • 360
Tematyka
  • Programowanie
ISBN
  • 9788328386112

Opinie Czysty kod w Pythonie. Twórz wydajny Zagórów

Na liście znajdują się opinie, które zostały zweryfikowane (potwierdzone zakupem) i oznaczone są one zielonym znakiem Zaufanych Opinii. Opinie niezweryfikowane nie posiadają wskazanego oznaczenia.

Ocena ogólna
4,5 na podstawie 1 opinia
  • m...l
    4,5
    Opinia została napisana przez użytkownika, który kupił produkt.
    Bardzo dobrze