Każdy programista pracujący w języku z dynamicznym systemem typowania słyszał pewnie ten żart: “chodzi jak kaczka, kwacze jak kaczka, rzuca wyjątki podczas działania programu jak kaczka - to musi być kaczka!”. Możemy zarzekać się, że to nieprawda, ale niech pierwszy rzuci kamień ten, kto nigdy nie pomylił typu argumentów przekazanych do funkcji czy też nie wywołał metody, której dany obiekt nie posiada i... przekonał się o swojej pomyłce dopiero “na produkcji”. Oczywiście przy małych projektach lub takich, które mają 100% pokrycie testami, problem braku typów może zejść na drugi plan. Jednak rzeczywistość wygląda najczęściej inaczej - piszemy duże projekty, a pokrycie staramy się utrzymać na sensownym, ale nie fanatycznie wysokim poziomie. W mojej prezentacji przedstawię mechanizm type hints jako technikę ułatwiającą rozwijanie i utrzymywanie projektów w języku Python. Podczas wystąpienia zaprezentuję techniczną stronę tego rozwiązania oraz dostępne narzędzia. Opowiem także o moim doświadczeniu we wprowadzaniu type hints w projektach, w których brałem udział. Ponadto pokażę jak type hinting otwierają drogę dla technik, które wcześniej nie były popularne w świecie języka Python - np wstrzykiwanie zależności.
42. Type hints w projekcie legacy
gradual typing
statyczna analiza uruchamiana w ramach CI
wymuszanie type annotations dla:
kluczowych modułów
interfejsów