Programowanie zespołowe 24L

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

Kaskadowy

Iteracyjny

Przyrostowy

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.

Polski