Czysty kod w Pythonie
- Kategoria:
- informatyka, matematyka
- Tytuł oryginału:
- Clean Python: Elegant Coding in Python
- Wydawnictwo:
- Helion
- Data wydania:
- 2020-05-19
- Data 1. wyd. pol.:
- 2020-05-19
- Liczba stron:
- 176
- Czas czytania
- 2 godz. 56 min.
- Język:
- polski
- ISBN:
- 9788328364622
- Tłumacz:
- Andrzej Watrak
- Tagi:
- informatyka komputery programowanie
W porównaniu z innymi językami programowania Python wyróżnia się prostotą i zaskakującymi możliwościami. Używa się go do analizy danych, budowania sztucznej inteligencji, tworzenia stron WWW, jak również w badaniach naukowych. Właściwości tego języka sprawiają, że kod trzeba pisać uważnie, szczególnie w dużych projektach. Tymczasem trudno jest znaleźć odpowiednio dobre źródło informacji o sposobach tworzenia kodu wysokiej jakości. Publikacje dotyczące dobrych praktyk kodowania w Pythonie są nieliczne, a ich jakość nieraz pozostawia wiele do życzenia. Dodatkowy problem wynika z wszechstronności Pythona: jest wykorzystywany w wielu dziedzinach i trudno wskazać wspólne dla nich wzorce programistyczne.
Ta książka jest znakomitym przewodnikiem, dzięki któremu zaczniesz tworzyć wydajne i bezbłędne aplikacje w Pythonie. Zaczniesz od formatowania i dokumentowania kodu, umiejętnego stosowania wbudowanych struktur, stosowania modułów i metaklas. W ten sposób nauczysz się pisać uporządkowany kod. Potem poznasz nowe funkcjonalności języka Python i dowiesz się, jak efektywnie z nich korzystać. Następnie dowiesz się, jak wykorzystywać zaawansowane cechy języka, takie jak programowanie asynchroniczne, określanie typów danych i obsługa ścieżek, a także jak diagnozować kod, wykonywać testy jednostkowe i integracyjne oraz przygotowywać kod do uruchomienia w środowisku produkcyjnym. Na końcu poznasz najważniejsze narzędzia przeznaczone do szybkiego tworzenia kodu, zarządzania jego wersjami i weryfikowania poprawności.
W tej książce między innymi:
właściwe wykorzystywanie wyrażeń i instrukcji
tworzenie własnych słowników
zaawansowane struktury danych
pisanie najlepszych modułów, klas i funkcji
asynchroniczne wywoływanie funkcji
Python: kodowanie jest sztuką!
Porównaj ceny
W naszej porównywarce znajdziesz książki, audiobooki i e-booki, ze wszystkich najpopularniejszych księgarni internetowych i stacjonarnych, zawsze w najlepszej cenie. Wszystkie pozycje zawierają aktualne ceny sprzedaży. Nasze księgarnie partnerskie oferują wygodne formy dostawy takie jak: dostawę do paczkomatu, przesyłkę kurierską lub odebranie przesyłki w wybranym punkcie odbioru. Darmowa dostawa jest możliwa po przekroczeniu odpowiedniej kwoty za zamówienie lub dla stałych klientów i beneficjentów usług premium zgodnie z regulaminem wybranej księgarni.
Za zamówienie u naszych partnerów zapłacisz w najwygodniejszej dla Ciebie formie:
• online
• przelewem
• kartą płatniczą
• Blikiem
• podczas odbioru
W zależności od wybranej księgarni możliwa jest także wysyłka za granicę. Ceny widoczne na liście uwzględniają rabaty i promocje dotyczące danego tytułu, dzięki czemu zawsze możesz szybko porównać najkorzystniejszą ofertę.
Mogą Cię zainteresować
Książka na półkach
- 10
- 9
- 2
- 1
- 1
- 1
OPINIE i DYSKUSJE
W samej książce jest dużo błędów, zarówno merytorycznych, jak i w kodzie. Autor myli argumenty z parametrami funkcji. Wartość domyślną parametrów nazywa kluczem. Jednak czarę goryczy przelało częste tłumaczenie autora czemu podejście A jest lepsze od podejścia B z perspektywy wyroczni. Jak można wmawiać czytelnikowi, że stosowanie namedTuple jest bardziej czytelne niż użycie podstawowych struktur danych. Prawie rzuciłem książką przy “przykładzie” dziedziczenia klas fruit i apple.
Przykłady programistyczne pisane są chyba na kolanie. Zawierają literówki, odnośniki do nieistniejących zmiennych i funkcji. Chyba sam autor nie sprawdził ich w polecanych przez siebie IDE.
Chyba najbardziej irytowało mnie powtarzanie tych samych treści w odstępie kilku stron (polecane biblioteki - pylint, opis OrderDict). Po prostu wyglądało to, jak dodawanie treści, bo było to dla autora korzystne.
Co dobrego z książki wyniosłem. Utrwaliłem sobie stosowanie konceptów takich jak __init__ oraz __str__. Same pokazanie dekoratorów, było całkiem dobrze napisane. Bardzo ciekawy przykład programowania aspektowego, którego jeszcze nie widziałem na produkcji w aplikacjach napisanych w pythonie (np: pisząc klasy z metodą __call__ można przetrzymywać stan i robić walidację).
Warto pamiętać o stosowaniu menadżera kontekstu “with”, gdyż zaoszczędzimy na tworzeniu bloków try i catch i zamyka on otwarte uchwyty do zasobów (np plików)
W samej książce jest dużo błędów, zarówno merytorycznych, jak i w kodzie. Autor myli argumenty z parametrami funkcji. Wartość domyślną parametrów nazywa kluczem. Jednak czarę goryczy przelało częste tłumaczenie autora czemu podejście A jest lepsze od podejścia B z perspektywy wyroczni. Jak można wmawiać czytelnikowi, że stosowanie namedTuple jest bardziej czytelne niż...
więcejOznaczone jako spoiler Pokaż mimo toNie polecam nikomu, ta książka to typowy skok na kasę, który mało co tłumaczy, a u świeżego programisty może jeszcze zaszkodzić. Autor w ogóle nie szanuje czytelników, którzy za tę książkę przecież płacą. Jeżeli szukasz dobrej książki o pythonie to polecam "Python. Wprowadzenie" M. Lutz - dużo grubsza, ale bez błędów.
Przykładowy kod był pisany na kolanie i nikt nawet nie zadał sobie trudu sprawdzenia czy jest poprawny. Nie będę wypisywał wszystkich błędów które znalazłem, poniżej tylko kilka uwag.
Plusy:
- przyjazny wstęp do programowania asynchronicznego, ale to samo jest w internecie za darmo (chociażby dokumentacja biblioteki asyncio),
- w miarę dobrze wytłumaczone podstawy generatorów i iteratorów,
Minusy:
- rozdział 1 to skrót z PEP8, PEP8 jest za darmo, jest krótki i przejrzysty,
- rozdział o testach nic nie tłumaczy i nic z niego nie wynika: podane 2 biblioteki i tyle, na pierwszym lepszym blogu są bardziej szczegółowe informacje i również za darmo,
- autor wielokrotnie powtarza to samo, jakby na siłę zwiększał objętość. Naprawdę te 176 stron czyta się w 2 dni, bo tak mało jest treści,
- masa błędów w przykładach kodu (pomimo korekty merytorycznej),który po prostu w wielu wypadkach nie działa: literówki, pomylone warunki, błędnie zapisane funkcje/klasy, przykłady kodu nie będące przykładami tego, o czym autor pisze, itd, itp, często na raz. Poniżej podaję kilka, po 76-tej stronie dałem sobie spokój.
Błędy:
- str. 20 - wytłumaczenie punktu "Be consistent in return statements." z PEP8 wprowadza więcej bałaganu, sugeruje fatalne praktyki i współczuję każdemu, kto będzie musiał poprawić/modyfikować kod napisany w ten sposób,
- str. 22 - przykłady kodu z protokołem managera kontekstu, "poprawny" kod nie działa: metoda __enter__ nie zwraca self, a musi, skoro jest używana jako fabryka w instrukcji 'with .. as ..'; w bloku instrukcji 'with NewProtocol(host, port) as con' autor wywołuje metody instancji klasy NewProtocol jak zwykłe funkcje, podczas gdy powinien odnieść się do obiektu instancji 'con',
- str. 34, listing 1.27 - kod w odniesieniu do listingu 1.26, który robi dokładnie do samo, bo najprawdopodobniej został odwrócony warunek, zapisany wynik funkcji jest błędny, na co również zwrócił uwagę inny czytelnik na forum wydawcy,
- str. 51, listing 2.14, przykład użycia funkcji zip() w innej funkcji, błędy: zdeklarowanie zmiennej "users" i przypisanie do niej wartości, ale ta sama zmienna jest deklarowana 4 linijki niżej jako "users=[]", do funkcji zip przekazywane są argumenty "user_names" (nigdy nie zdeklarowana, ale miało to być chyba to pierwsze "users", i "user_salaries", również nie zdeklarowana, mamy za to "user_salary" (sic!) deklarowane w 2 linijce,
- str. 72, listing 3.18 - tu można zapisać kartkę a4. Odwołania do nieistniejących zmiennych, błędy w nazwach metod (inaczej nazywane, inaczej wywoływane),metody ponazywanie tak samo jak atrybuty, używanie metod w sposób niezgodny z ich przeznaczeniem i opisem (również wynika z kodu),cały przykład jest jednym wielkim błędem i masą wzajemnie się maskujących bugów,
- str. 76, listing 3.24 - wbrew temu co uważa autor NIE JEST to przykład klasy abstrakcyjnej. Jeżeli Fruit() ma być nadrzędną klasą abstrakcyjną dla Apple(),to Apple powinno być zadeklarowane jaki Apple(Fruit) - (a nie jest),a obiekt fruit stworzony jako instancja klasy Apple, a nie Fruit! Co to za klasa abstrakcyjna, skoro jest instancjonowana? Po co autor próbuje zainstancjonować klasę abstrakcyjną? Jeżeli ktoś nie zna tego pojęcia, to właśnie został wprowadzony w błąd. Co gorsza, opis tego co jest w kodzie wygląda tak, jakby autor mimo wszystko uważał, że to poprawne.
Jednym zdaniem: to, że ktoś to napisał i jeszcze chce za to pieniędzy jest po prostu śmieszne. Python ma ogromną społeczność, dużo rzetelniejsze i dokładniejsze informacje są na byle jakim darmowym blogu poświęconym Pythonowi. Strata czasu i pieniędzy, co i tak nie jest najgorsze - najgorsze jest wprowadzenie w błąd.
PS. Jeżeli ktoś szuka książki o podobnej tematyce sugeruję zainteresować się pozycją "Efektywny Python" Bretta Slatkina. Zacząłem ją czytać kilka dni po skończeniu "Czystego kodu" i muszę przyznać, że jest zdecydowanie obszerniejsza i dokładniejsza w treści, porusza praktycznie te same zagadnienia, ale dużo lepiej i dokładniej je tłumaczy, plus jak na razie natknąłem się tylko na drobne błędy wynikające z tłumaczenia kodu przed tłumacza (ale to częste w książkach Helionu).
Nie polecam nikomu, ta książka to typowy skok na kasę, który mało co tłumaczy, a u świeżego programisty może jeszcze zaszkodzić. Autor w ogóle nie szanuje czytelników, którzy za tę książkę przecież płacą. Jeżeli szukasz dobrej książki o pythonie to polecam "Python. Wprowadzenie" M. Lutz - dużo grubsza, ale bez błędów.
więcejOznaczone jako spoiler Pokaż mimo toPrzykładowy kod był pisany na kolanie i nikt nawet nie...
Tak jak autor napisał, mało jest książek o poprawnym pisaniu w Pythonie. Ta książka wypełnia tę lukę. Jednak, żeby źle pisać, trzeba umieć, jako tako programować. Więc ta pozycja jest raczej dla tych, co znają ten język. Nawet w minimalnym stopniu. Polecam
Tak jak autor napisał, mało jest książek o poprawnym pisaniu w Pythonie. Ta książka wypełnia tę lukę. Jednak, żeby źle pisać, trzeba umieć, jako tako programować. Więc ta pozycja jest raczej dla tych, co znają ten język. Nawet w minimalnym stopniu. Polecam
Oznaczone jako spoiler Pokaż mimo to