Python dla profesjonalistow Debugowanie testowanie i utrzymywanie kodu.pdf

(817 KB) Pobierz
Tytuł oryginału: Pro Python Best Practices: Debugging, Testing and Maintenance
Tłumaczenie: Radosław Meryk
ISBN: 978-83-283-3802-9
Original edition copyright © 2017 by Kristian Rother
All rights reserved.
Polish edition copyright © 2018 by HELION SA
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/pytpro
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis tre ci
O autorze ...............................................................................................................13
O recenzencie technicznym ....................................................................................15
Podzi kowania ......................................................................................................17
Przedmowa ...........................................................................................................19
Rozdzia 1.
Wprowadzenie ......................................................................................................21
Lekcja pokory ........................................................................................................................................21
Najlepsze praktyki w Pythonie ...........................................................................................................21
Pochodzenie najlepszych praktyk ......................................................................................................23
Hacking ...........................................................................................................................................23
Inżynieria programowania ...........................................................................................................25
Agile .................................................................................................................................................25
Software Craftsmanship ...............................................................................................................25
Dla kogo jest ta książka? ......................................................................................................................26
O czym jest ta książka? ........................................................................................................................27
Część I. „Debugowanie” ...............................................................................................................27
Część II. „Automatyczne testowanie” ........................................................................................27
Część III. „Utrzymanie” ...............................................................................................................27
Dalsze korzyści ...............................................................................................................................28
Gra MazeRun ........................................................................................................................................28
Jak korzystać z tej książki? ...................................................................................................................29
Instalacja Pythona 3 ......................................................................................................................29
Instalacja biblioteki Pygame ........................................................................................................29
Instalacja edytora tekstu ...............................................................................................................30
Pobranie kodu źródłowego przykładów ....................................................................................30
Kup książkę
Poleć książkę
PYTHON DLA PROFESJONALISTÓW. DEBUGOWANIE, TESTOWANIE I UTRZYMYWANIE KODU
Cz
I
Debugowanie .....................................................................31
Wyj tki w Pythonie ...............................................................................................33
Wyjątki są defektami, o których istnieniu wiemy ...........................................................................33
Czytanie kodu .......................................................................................................................................35
Błędy typu SyntaxError ................................................................................................................35
Najlepsze praktyki debugowania wyjątków SyntaxError ........................................................37
Analiza komunikatów o błędach ........................................................................................................37
Typ błędu ........................................................................................................................................38
Opis błędu ......................................................................................................................................38
Ślad ..................................................................................................................................................39
Dedukcja .........................................................................................................................................40
Przechwytywanie wyjątków ................................................................................................................40
Najlepsze praktyki debugowania wyjątków IOError ...............................................................41
Błędy i defekty .......................................................................................................................................42
Skąd się biorą defekty? ..................................................................................................................42
Poprawny kod .......................................................................................................................................43
Najlepsze praktyki ................................................................................................................................44
Rozdzia 2.
Rozdzia 3.
B dy semantyczne w Pythonie .............................................................................45
Porównywanie rzeczywistych danych wyjściowych z oczekiwanymi ..........................................46
Defekty ............................................................................................................................................47
Defekty przypisania zmiennych .........................................................................................................48
Wielokrotne inicjowanie ..............................................................................................................48
Przypadkowe przypisanie .............................................................................................................49
Przypadkowe porównania ............................................................................................................49
Nieprawidłowe zmienne w wyrażeniu .......................................................................................49
Przestawione literały w wyrażeniu ..............................................................................................50
Defekty indeksowania ..........................................................................................................................51
Tworzenie nieprawidłowych indeksów ......................................................................................51
Użycie nieprawidłowych indeksów ............................................................................................52
Defekty w instrukcjach przepływu sterowania ................................................................................53
Defekty w wyrażeniach logicznych .............................................................................................54
Defekty związane z wcięciami .....................................................................................................54
Defekty w używaniu funkcji ...............................................................................................................55
Pomijanie wywołania funkcji ......................................................................................................55
Brak instrukcji return ...................................................................................................................55
Brak przechowywania zwracanej wartości ................................................................................55
Propagacja błędów ...............................................................................................................................56
Najlepsze praktyki ................................................................................................................................57
Rozdzia 4.
Debugowanie metod naukow ...........................................................................59
Stosowanie metody naukowej ............................................................................................................60
Odtwarzanie błędu ...............................................................................................................................61
Automatyzowanie błędu .....................................................................................................................62
Izolowanie defektu ...............................................................................................................................63
Strategia rozbierania .....................................................................................................................63
Strategia wyszukiwania binarnego ..............................................................................................64
4
Kup książkę
Poleć książkę
SPIS TRE CI
Uzyskiwanie pomocy ...........................................................................................................................65
Czas na przerwę .............................................................................................................................65
Wyjaśnij problem komuś innemu ..............................................................................................65
Programowanie w parach .............................................................................................................65
Przeglądy kodu ..............................................................................................................................65
Czytanie ..........................................................................................................................................66
Sprzątanie ..............................................................................................................................................68
Metoda naukowa i inne najlepsze praktyki ......................................................................................68
Najlepsze praktyki ................................................................................................................................68
Rozdzia 5.
Debugowanie za pomoc instrukcji print ..............................................................71
Diagnozowanie, czy kod był uruchamiany .......................................................................................73
Wyświetlanie zawartości zmiennych .................................................................................................73
Estetyczne wyświetlanie struktur danych ..................................................................................74
Upraszczanie danych wejściowych ....................................................................................................74
Zacznij od minimalnego wejścia .................................................................................................75
Stopniowe dodawanie większej ilości danych wejściowych ....................................................76
Włączanie i wyłączanie wyświetlania wyjścia ..................................................................................78
Kompletny kod .....................................................................................................................................79
Plusy i minusy używania instrukcji print .........................................................................................79
Najlepsze praktyki ................................................................................................................................80
Rozdzia 6.
Debugowanie z funkcjami introspekcji ..................................................................81
Kodowanie eksploracyjne w IPythonie .............................................................................................82
Eksploracja plików i katalogów ...................................................................................................83
Przegląd poleceń powłoki IPythona ...........................................................................................83
Odkrywanie przestrzeni nazw ............................................................................................................84
Eksploracja przestrzeni nazw za pomocą polecenia dir() ........................................................85
Eksploracja przestrzeni nazw obiektów .....................................................................................86
Eksploracja atrybutów w programie Pythona ...........................................................................87
Alternatywy instrukcji dir w IPythonie ......................................................................................87
Mechanika przestrzeni nazw ..............................................................................................................88
Python używa przestrzeni nazw dla własnych funkcji .............................................................88
Modyfikowanie przestrzeni nazw ...............................................................................................88
Przestrzenie nazw i zasięg lokalny ..............................................................................................89
Przestrzenie nazw są podstawową właściwością Pythona .......................................................90
Używanie samodokumentujących się obiektów ..............................................................................90
Dostęp do ciągów dokumentacyjnych za pomocą instrukcji help() ......................................91
Opisy obiektów w IPythonie ........................................................................................................91
Analizowanie typów obiektów ...........................................................................................................92
Sprawdzanie tożsamości obiektu ................................................................................................93
Sprawdzanie egzemplarzy i podklas ...........................................................................................93
Praktyczne wykorzystanie introspekcji .............................................................................................93
Znajdowanie literówek za pomocą introspekcji .......................................................................94
Łączenie funkcji introspekcji .......................................................................................................95
Introspekcja w dużych i małych programach ...........................................................................95
Najlepsze praktyki ................................................................................................................................96
5
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin