Przedmiot prowadzony na Wydziale Fizyki UW w ramach studiów I stopnia. Autor poniższego: Piotr Biegański.
1. Planowanie projektu
1.1 Projektowanie obiektowe
Zajęcia z MIMUW, których pierwsze dwa moduły mają ładny wstęp do projektowania obiektowego.
Strona z Wikipedii, która opisuje używaną przez nas notację (w szerszym niż wymagany zakresie).
Otwartoźródłowy program, który umożliwia rysowanie diagramów z użyciem UML.
Zadania, na których można poćwiczyć.
1.2 Modele zarządzania projektem
2. Dobre praktyki w Pythonie
2.1 Specyfika Pythona jako języka obiektowego
Problem prywatności
Klasy i metody abstrakcyjne
Metody statyczne i klasowe
Nieistnienie polimorfizmu, metody klasowe jako potencjalne rozwiązanie
Podział projektu na pliki, strukturyzowanie klas pomiędzy plikami
2.2 Czytelność i dokumentowanie kodu
PEP-8, czyli zbiór wytycznych stylistycznych, pomagających pisać czytelny i standaryzowany kod.
Podstawowe rzeczy dotyczące typowania, czyli przypisywania obiektom konkretnych typów danych. Pełna dokumentacja zawiera też inne rzeczy jak omawiane TypeVar
. Opis tego, jak powinno się typować zawiera PEP-484.
PEP-256, PEP-257 i PEP-258 zawierają podstawowe informacje na temat formatowania i używania docstringów. W Pythonie jest wiele dopuszczalnych konwencji. Osobiście używam docstringów zgodnych z formatem Google, wydają mi się czytelne.
Googlowskie wytyczne stylistyczne są zgodne z odpowiednimi PEPami, przy okazji precyzując i rozszerzając to, co PEPy zostawiają jako decyzję dla dewelopera. Są spójne i dobrze przemyślane, warto się zapoznać.
2.3 Pyenv i kontrola wersji Pythona
Repozytorium pyenva, a w nim również instrukcje instalacji i wyjaśnienie, jak działa.
Pyenv nie działa na Windowsie (chociaż pewnie lepiej powiedzieć, że to Windows nie działa…). Programować na Windowsie, w tym używając pyenva, najlepiej używając Windows Subsytem for Linux.
Jeszcze lepszym rozwiązaniem problemu Windowsa jest pozbycie się go.
2.4 Moduły, biblioteki, skrypty
Definicje pojęć modułu, paczki i skryptu w kontekście Pythona, oraz podstawowe wytyczne jak je tworzyć.
Dokumentacja modułu argparse
.
2.5 Ćwiczenie podsumowujące
Zadanie wymagające zaprojektowania hierarchii klas oraz zaimplementowania jej w zgodzie z dobrymi praktykami.