Rozdział 24 · Co dalej? Roadmap Python- deweloper

Software Engineering

Git, review, testowanie, analiza statyczna, diagnostyka, pakowanie i dostarczanie wchodzą w jeden proces roboczy.

Jak bezpiecznie zmienić kod

W skrypcie edukacyjnym czasami wystarczy uzyskać poprawny wynik tylko raz. W projekcie trzeba także bezpiecznie zmieniać kod dalej. Przepływ pracy łączy wymagania, realizację, testowanie i dostawę. Narzędzia mogą się zmieniać. Wymagania wobec procesu pozostają: można śledzić historię zmian, można zobaczyć awarię i powtórzyć kompilację.

Issuekontekst, granice, kryteriaBranchodizolowana zmianaLocal checkstests, lint, typesPull Requestdiff, review, dyskusjaCI and releasepowtarzalny test i artefakt
Zmiana podąża tą samą ścieżką, która jest testowana.

Git i review głębsze niż podstawowe komendy

Naucz się czytać historię i diff, rozgałęziające, merge, bezpieczne rebase lokalnej gałęzi, revert, tagi i rozwiązywanie konfliktów. Celem nie jest zbiór komend. Musisz zrozumieć Jaki rodzaj grafu zatwierdzeń zostanie uzyskany i jak odzyskać błąd. Review sprawdza kontrakt, przypadki brzegowe, testy, czytelność i ryzyko operacyjne; styl kodu jest lepszy Deleguj kontrole automatyczną.

Strategia testowa

Oznacza pytestCo modelujeRyzyko nadużycia
fixturesJawne przygotowanie stanu i zasobów.Ukryty złożony fixture sprawia, że test jest niezrozumiały.
parametrizeJeden kontrakt dla zestawu wejść i granic.Duża tabela może ukrywać różne przyczyny awarii.
mock / monkeypatchKontrolowana granica: czas, sieć, proces, API.Mock szczegóły wewnętrzne łączą test z implementacją.
coverageKtóre rzędy lub gałęzie zostały wykonane.Wysoki odsetek nie dowodzi jakości zdań.

Buduj piramidę przez ryzyko: dużo szybkich testów czystej logiki, mniej testów całkowania testy rzeczywistych granic i kilka scenariuszy end-to-end. Test musi mieć powód, Obserwowalna aprobata i kontrolowane środowisko.

Automatyczne kontrole i diagnostyka

Ruff może wykonywać lint i formatowanie, a mypy sprawdza spójność adnotacje. Wybierz zasady, zapisz je do pyproject.toml i uruchom równo lokalnie i w CI. W przypadku defektu zbieraj minimum odtworz, przeczytaj traceback, ustaw punkt przerwy lub dodaj Ustrukturyzowany log. Profiler jest potrzebny po zmierzeniu problemu, a nie dla Przedwczesna optymalizacja.

Pakiet, wersja i dostawa

Projekt potrzebuje jasnej struktury, metadanych, zależności, build backend oraz weryfikacji instalacji zbudowanego wheel w czystym środowisku. Przez PyPI publikują pakiety Python-, ale nie każdej aplikacji potrzeba takiej publikacji. Semantic Versioning przydaje się, gdy projekt deklaruje publiczny API i może konsekwentnie określić kompatybilne i niekompatybilne zmiany.

warstwa systemowa

Wiedza wokół kodu Python-
PROTOKOŁY
HTTP semantics
status codes
timeouts and retries
idempotentność
DANE
SQL
schemat
indeksy
transakcji
migracje
ŚRODOWISKO
Linux
shell
processes
permissions
environment variables
BEZPIECZEŃSTWO
walidacja wejścia
sekrety poza repozytorium
minimalne przywileje
Aktualizacja zależności
CI/CD
powtarzalne polecenia
chronione sekrety
rozdzielenie build i deploy
rollback
CONTAINERS
image
runtime config
health check
logs
nie mylić pojemnika z VM
W rzeczywistym projekcie kod Python-code współdziała z protokołami, danymi, systemem operacyjnym i środowiskiem.
Oficjalna dokumentacja
pytest documentation
Ruff documentation
mypy documentation
Git reference
GitHub pull requests documentation
logging: Logging facility for Python
The Python Profilers
Python Packaging User Guide
Semantic Versioning 2.0.0
RFC 9110: HTTP Semantics
PostgreSQL documentation
GitHub Actions documentation
Docker Get Started