Używamy cookies, aby ułatwić korzystanie z Portalu. Możesz określić warunki przechowywania, dostępu do plików cookies w Twojej przeglądarce. Dowiedz się więcej.
strona główna Strona główna | Nowości | Promocje | Zapowiedzi Twoje konto | Zarejestruj | Schowek | Kontakt | Pomoc
mapa działów
Szukaj: szukanie zaawansowane
Koszyk
Książki \ Programowanie \ Python

Python dla profesjonalistów. Debugowanie, testowanie i utrzymywanie kodu Język: 1

978-83-283-3802-9

Cena Brutto: 49.00

Cena netto: 46.67

Ilość:
Wersja: Drukowana
Autor Kristian Rother
Liczba_stron 272
Wydawnictwo Helion
Oprawa miękka
Data_Wydania 2017-12-10

Python

dla profesjonalistów. Debugowanie, testowanie i utrzymywanie kodu



Python istnieje już ponad 25 lat. Nie jest trudnym językiem i oferuje ogromne możliwości. Tworzenie dobrych programów w Pythonie wymaga jednak od programistów dużych umiejętności. Cykl rozwoju oprogramowania jest pełen pułapek nieznanych początkującym koderom. Mimo to w podręcznikach Pythona niewiele uwagi poświęca się debugowaniu i testowaniu, a przecież etapy te mają kluczowe znaczenie dla jakości kodu i funkcjonalności tworzonego oprogramowania.


Ta książka uczyni Cię lepszym programistą! Dzięki przedstawionym tu podstawowym praktykom stosowanym przez najbardziej profesjonalnych programistów Pythona będziesz tworzył doskonalszy kod. Zoptymalizujesz z nimi procesy debugowania programów, pisania automatycznych testów i utrzymywania oprogramowania bez nadmiernego wysiłku. Przedstawione tu techniki będą szczególnie przydatne dla programistów zajmujących się analizą danych, tworzeniem stron internetowych oraz rozwijaniem oprogramowania naukowego.


Najważniejsze zagadnienia przedstawione w książce:

  • błędy semantyczne i wyjątki,
  • sposoby eliminacji błędów i narzędzia do debugowania,
  • zasady i techniki testowania aplikacji,
  • mocne i słabe strony testów automatycznych,
  • mechanizm kontroli wersji,
  • kontrola typów i sporządzanie dokumentacji.
    • O autorze
    • O recenzencie technicznym
    • Podziękowania
    • Przedmowa
    • Rozdział 1 Wprowadzenie
      • Lekcja pokory
      • Najlepsze praktyki w Pythonie
      • Pochodzenie najlepszych praktyk
        • Hacking
        • Inżynieria programowania
        • Agile
        • Software Craftsmanship
      • Dla kogo jest ta książka?
      • O czym jest ta książka?
        • Część I. Debugowanie
        • Część II. Automatyczne testowanie
        • Część III. Utrzymanie
        • Dalsze korzyści
      • Gra MazeRun
      • Jak korzystać z tej książki?
        • Instalacja Pythona 3
        • Instalacja biblioteki Pygame
        • Instalacja edytora tekstu
        • Pobranie kodu źródłowego przykładów
    • Część I Debugowanie
    • Rozdział 2 Wyjątki w Pythonie
      • Wyjątki są defektami, o których istnieniu wiemy
      • Czytanie kodu
        • Błędy typu SyntaxError
        • Najlepsze praktyki debugowania wyjątków SyntaxError
      • Analiza komunikatów o błędach
        • Typ błędu
        • Opis błędu
        • Ślad
        • Dedukcja
      • Przechwytywanie wyjątków
        • Najlepsze praktyki debugowania wyjątków IOError
      • Błędy i defekty
        • Skąd się biorą defekty?
      • Poprawny kod
      • Najlepsze praktyki
    • Rozdział 3 Błędy semantyczne w Pythonie
      • Porównywanie rzeczywistych danych wyjściowych z oczekiwanymi
        • Defekty
      • Defekty przypisania zmiennych
        • Wielokrotne inicjowanie
        • Przypadkowe przypisanie
        • Przypadkowe porównania
        • Nieprawidłowe zmienne w wyrażeniu
        • Przestawione literały w wyrażeniu
      • Defekty indeksowania
        • Tworzenie nieprawidłowych indeksów
        • Użycie nieprawidłowych indeksów
      • Defekty w instrukcjach przepływu sterowania
        • Defekty w wyrażeniach logicznych
        • Defekty związane z wcięciami
      • Defekty w używaniu funkcji
        • Pomijanie wywołania funkcji
        • Brak instrukcji return
        • Brak przechowywania zwracanej wartości
      • Propagacja błędów
      • Najlepsze praktyki
    • Rozdział 4 Debugowanie metodą naukową
      • Stosowanie metody naukowej
      • Odtwarzanie błędu
      • Automatyzowanie błędu
      • Izolowanie defektu
        • Strategia rozbierania
        • Strategia wyszukiwania binarnego
      • Uzyskiwanie pomocy
        • Czas na przerwę
        • Wyjaśnij problem komuś innemu
        • Programowanie w parach
        • Przeglądy kodu
        • Czytanie
      • Sprzątanie
      • Metoda naukowa i inne najlepsze praktyki
      • Najlepsze praktyki
    • Rozdział 5 Debugowanie za pomocą instrukcji print
      • Diagnozowanie, czy kod był uruchamiany
      • Wyświetlanie zawartości zmiennych
        • Estetyczne wyświetlanie struktur danych
      • Upraszczanie danych wejściowych
        • Zacznij od minimalnego wejścia
        • Stopniowe dodawanie większej ilości danych wejściowych
      • Włączanie i wyłączanie wyświetlania wyjścia
      • Kompletny kod
      • Plusy i minusy używania instrukcji print
      • Najlepsze praktyki
    • Rozdział 6 Debugowanie z funkcjami introspekcji
      • Kodowanie eksploracyjne w IPythonie
        • Eksploracja plików i katalogów
        • Przegląd poleceń powłoki IPythona
      • Odkrywanie przestrzeni nazw
        • Eksploracja przestrzeni nazw za pomocą polecenia dir()
        • Eksploracja przestrzeni nazw obiektów
        • Eksploracja atrybutów w programie Pythona
        • Alternatywy instrukcji dir w IPythonie
      • Mechanika przestrzeni nazw
        • Python używa przestrzeni nazw dla własnych funkcji
        • Modyfikowanie przestrzeni nazw
        • Przestrzenie nazw i zasięg lokalny
        • Przestrzenie nazw są podstawową właściwością Pythona
      • Używanie samodokumentujących się obiektów
        • Dostęp do ciągów dokumentacyjnych za pomocą instrukcji help()
        • Opisy obiektów w IPythonie
      • Analizowanie typów obiektów
        • Sprawdzanie tożsamości obiektu
        • Sprawdzanie egzemplarzy i podklas
      • Praktyczne wykorzystanie introspekcji
        • Znajdowanie literówek za pomocą introspekcji
        • Łączenie funkcji introspekcji
        • Introspekcja w dużych i małych programach
      • Najlepsze praktyki
    • Rozdział 7 Korzystanie z interaktywnego debugera
      • Interaktywny debuger ipdb
        • Instalowanie ipdb
      • Uruchamianie debugera
        • Uruchamianie ipdb z wiersza polecenia
        • Uruchamianie ipdb z poziomu programu
        • Debugowanie post mortem
        • Uruchamianie debugera w odpowiedzi na wyjątki
        • Naprawa defektu
      • Komendy w wierszu poleceń debugera
        • Inspekcja zmiennych
        • Ocena wartości wyrażeń Pythona
        • Krokowe uruchamianie kodu
        • Wznawianie działania programu
      • Używanie pułapek
        • Przeglądanie i usuwanie pułapek
        • Pułapki warunkowe
      • Konfigurowanie ipdb
      • Przykład sesji ipdb
        • Dodawanie funkcji sterowania grą
        • Krokowe uruchamianie kodu
        • Usuwanie defektu
        • To działa!
        • Czy teraz program nie ma defektów?
      • Inne narzędzia do debugowania
        • pdb debuger Pythona
        • Środowisko IDE PyCharm
        • ipdbplugin
        • pudb
        • wdb
        • Pasek narzędzi Django Debug
        • cProfile
      • Najlepsze praktyki
    • Część II Automatyczne testowanie
    • Rozdział 8 Pisanie automatycznych testów
      • Instalacja frameworka py.test
      • Pisanie funkcji testowej
        • Uruchamianie testów
        • Pisanie testu, który nie przechodzi
        • Spraw, aby test przeszedł
        • Testy pomyślne a testy niepomyślne
      • Pisanie oddzielnych funkcji testowych
      • Asercje dostarczają przydatnych danych wyjściowych
      • Testowanie występowania wyjątków
      • Przypadki brzegowe
        • Złożone przypadki brzegowe
      • Korzyści wynikające z automatycznego testowania
      • Inne frameworki testowe w Pythonie
        • unittest
        • nose
        • doctest
        • Pisanie bloku __main__
      • Najlepsze praktyki
    • Rozdział 9 Organizowanie danych testowych
      • Używanie fikstur
        • Parametr scope
      • Parametryzacja testów
        • Wiele parametrów
        • Fikstury z parametrami
      • Makiety
      • Testowanie plików wynikowych
        • Sprzątanie po testach
        • Używanie plików tymczasowych
        • Porównywanie plików wynikowych z danymi testowymi
          • Moduł filecmp
          • Moduł difflib
        • Najlepsze praktyki testowania dużych plików
      • Generowanie losowych danych testowych
      • Gdzie przechowywać dane testowe?
        • Moduły danych testowych
        • Katalogi danych testowych
        • Bazy danych testowych
      • Najlepsze praktyki
    • Rozdział 10 Pisanie zestawu testów
      • Moduły testowe
      • Klasy testów
        • Refaktoryzacja funkcji testowych
        • Fikstury w klasach testowych
      • W jaki sposób testy znajdują testowany kod?
      • Wiele pakietów testowych
      • Automatyczne wykrywanie testów
      • Uruchamianie zestawu testów
        • Częściowe uruchomienie
          • Uruchamianie modułów i pakietów testowych
          • Uruchamianie klas testowych
          • Uruchamianie pojedynczych testów
            • Wybieranie testów za pomocą słów kluczowych
          • Analiza testów zakończonych niepowodzeniem
          • Ponowne uruchamianie testów
      • Obliczanie pokrycia testami
        • Zestaw testów wymaga utrzymania
      • Najlepsze praktyki
    • Rozdział 11 Najlepsze praktyki testowania
      • Rodzaje automatycznych testów
        • Testy jednostkowe
        • Testy integracyjne
        • Testy akceptacyjne
        • Testy regresji
        • Testy wydajności
        • Optymalizacja wydajności
      • Podejście najpierw test
        • Pisanie testów według specyfikacji
        • Pisanie testów według defektów
        • Rozwój oprogramowania sterowany testami (TDD)
      • Zalety automatycznego testowania
        • Testowanie oszczędza czas
        • Testowanie dodaje precyzji
        • Dzięki testowaniu współpraca staje się łatwiejsza
      • Ograniczenia automatycznego testowania
        • Testowanie wymaga sprawdzalnego kodu
        • Testowanie nie działa dobrze w przypadku projektów, które szybko się zmieniają
        • Testowanie nie udowadnia poprawności
      • Programy trudne do testowania
        • Liczby losowe
        • Graficzne interfejsy użytkownika
        • Dane wyjściowe złożone lub o dużej objętości
        • Współbieżność
        • Sytuacje, gdy automatyczne testy zawodzą
      • Inne możliwości dla automatycznego testowania
        • Tworzenie prototypów
        • Przeglądy kodu
        • Listy kontrolne
        • Procesy promujące poprawność
        • Wnioski
      • Najlepsze praktyki
    • Część III Utrzymanie
    • Rozdział 12 Kontrola wersji
      • Wprowadzenie do pracy z systemem git
        • Tworzenie repozytorium
        • Dodawanie plików do repozytorium
        • Śledzenie zmian w plikach
        • Przenoszenie i usuwanie plików
        • Odrzucanie zmian
      • Przeglądanie historii kodu
        • Pobieranie starszych commitów
        • Powrót do najświeższego commita
      • Publikowanie kodu w serwisie GitHub
        • Rozpoczynanie projektu w serwisie GitHub
        • Korzystanie z serwisu GitHub z pozycji pojedynczego programisty
        • Praca w projektach rozpoczętych przez innych
        • Projekty z wieloma programistami
        • Scalanie zmian wprowadzonych przez dwie osoby
        • Żądania pobrania
      • Korzystanie z gałęzi
        • Scalanie gałęzi
      • Konfigurowanie systemu git
        • Ignorowanie plików
        • Ustawienia globalne
      • Przykłady użycia
        • Dwadzieścia znaków: mały projekt o małym ruchu
        • Python: wielki projekt z codziennymi commitami
        • grep: projekt długoterminowy
      • Inne systemy kontroli wersji
        • Mercurial
        • Subversion (SVN)
        • CVS (Concurrent Versions Software)
        • Bitbucket
        • Sourceforge
      • Najlepsze praktyki
    • Rozdział 13 Konfigurowanie projektu w Pythonie
      • Tworzenie struktury projektu za pomocą narzędzia pyscaffold
        • Instalacja narzędzia pyscaffold
      • Typowe katalogi w projekcie Pythona
        • Katalogi utworzone przez pyscaffold
          • Główny katalog pakietu Pythona
          • Katalog tests/
          • Katalog docs/
          • Katalog .git/
        • Katalogi nieutworzone przez pyscaffold
          • Katalog bin/
          • Katalogi build/, dist/ i sdist/
          • Katalog .hg/
          • Katalogi danych
      • Pliki
        • Pliki utworzone przez pyscaffold
          • README.rst
          • setup.py
          • AUTHORS.rst
          • LICENSE.rst
          • MANIFEST.in
          • versioneer.py
          • requirements.txt
          • .coveragerc
          • .gitattributes i .gitignore
        • Pliki, które nie są tworzone przez pyscaffold
      • Ustawianie numerów wersji programu
      • Zarządzanie środowiskiem projektu Pythona za pomocą virtualenv
        • Instalacja narzędzia virtualenv
        • Podłączanie projektu do środowiska virtualenv
        • Praca z projektem virtualenv
        • Instalowanie pakietów w środowisku virtualenv
        • Opuszczanie sesji środowiska virtualenv
        • Konfigurowanie uruchamiania i dezaktywacji środowiska virtualenv
          • Ustawienie zmiennej PYTHONPATH
      • Instalowanie Pygame z virtualenv
      • Najlepsze praktyki
    • Rozdział 14 Porządkowanie kodu
      • Kod zorganizowany i niezorganizowany
        • Entropia oprogramowania: przyczyny niezorganizowanego kodu
      • Jak rozpoznać niezorganizowany kod?
        • Czytelność
        • Niedoskonałości strukturalne
        • Redundancja
        • Słabości projektu
      • Porządkowanie instrukcji Pythona
        • Pogrupuj instrukcje importu
        • Pogrupuj stałe
        • Usuń niepotrzebne wiersze
        • Zastosuj opisowe nazwy zmiennych
        • Idiomatyczny kod Pythona
      • Refaktoryzacja
        • Wyodrębnianie funkcji
        • Tworzenie prostego interfejsu wiersza polecenia
        • Podział programów na moduły
      • Uporządkowany kod
      • PEP8 i pylint
        • Komunikaty ostrzegawcze
        • Ocena punktowa kodu
      • Zrób tak, żeby działało, zrób to dobrze, zrób tak, żeby działało szybko
        • Zrób tak, żeby działało
        • Zrób to dobrze
        • Zrób tak, żeby działało szybko
      • Przykłady dobrze zorganizowanego kodu
      • Najlepsze praktyki
    • Rozdział 15 Dekompozycja zadań programistycznych
      • Dekompozycja zadań programowania jest trudna
      • Proces dekompozycji zadań programowania
      • Napisz historyjkę użytkownika
      • Dodaj szczegóły do opisu
        • Kryteria akceptacji
        • Opisy przypadków użycia
      • Sprawdź wymagania niefunkcjonalne
      • Identyfikowanie problemów
        • Niepełne informacje
        • Wiedza specjalistyczna
        • Zmiany istniejącego kodu
        • Przewidywanie przyszłych zmian
      • Wybór architektury
      • Identyfikowanie komponentów programu
      • Implementacja
      • Inne narzędzia planowania
        • Plan projektu na jednej stronie
        • Śledzenie spraw
        • Kanban
      • Najlepsze praktyki
    • Rozdział 16 Statyczne typowanie w języku Python
      • Słabe strony dynamicznego typowania
        • Sygnatury funkcji
        • Granice wartości
        • Semantyczne znaczenie typów
        • Typy złożone
      • Czy w Pythonie jest możliwe silniejsze typowanie?
      • Asercje
      • NumPy
      • Bazy danych
      • Integracja kodu w języku C
      • Cython
      • Wskazówki typowania
        • mypy
      • Której metody kontroli typów używać?
      • Najlepsze praktyki
    • Rozdział 17 Dokumentacja
      • Dla kogo piszemy dokumentację?
      • Sphinx: narzędzie do tworzenia dokumentacji dla języka Python
        • Konfigurowanie Sphinksa
        • Pliki utworzone przez program Sphinx
        • Tworzenie dokumentacji
          • Budowanie dokumentacji HTML
          • Budowanie dokumentacji PDF
          • Budowanie dokumentacji EPUB
      • Pisanie dokumentacji
        • Dyrektywy
        • Organizowanie dokumentów
        • Przykłady kodu
        • Generowanie dokumentacji na podstawie ciągów docstring
      • Testy dokumentacji
      • Konfigurowanie Sphinksa
        • Wpisy Todo
          • Tworzenie listy Todo
        • Budowanie warunkowe
        • Zmiana wyglądu i wrażenia
      • Jak napisać dobrą dokumentację?
        • Sekcje tekstu w dokumentacji technicznej
          • Streszczenie
          • Wymagania wstępne i instalacja
          • Pierwsze kroki
          • Receptury
          • Studia przypadków
          • Dokumentacja techniczna
          • Dokumentacja projektowa
          • Aspekty prawne
            • Przykłady dobrej dokumentacji
      • Inne narzędzia do tworzenia dokumentacji
        • MkDocs
        • Notatniki Jupyter
        • GitBook
        • Read the Docs
        • pydoc
        • S5
        • pygments
        • doctest
        • PyPDF2
        • pandoc
      • Najlepsze praktyki
powrót
 
Produkty Podobne
Data science od podstaw. Analiza danych w Pythonie
Rozwijanie mikrousług w Pythonie. Budowa, testowanie, instalacja i skalowanie
Python 3. Kolejne lekcje dla nowych programistów
Data Analytics with Spark Using Python
Python w analizie danych. Przetwarzanie danych za pomocą pakietów Pandas i NumPy oraz środowiska IPython. Wydanie II
Zestaw 2 książek Python (Zaawansowany Python + Python w uczeniu maszynowym)
Python w uczeniu maszynowym. Podejście sterowane testami
Python 3. Proste wprowadzenie do fascynującego świata programowania
Przewodnik po Pythonie. Dobre praktyki i praktyczne narzędzia
Python dla profesjonalistów. Debugowanie, testowanie i utrzymywanie kodu
Więcej produktów