54000 tysięcy linii napisanych w tym języku i dopiero ostatnio zaczął korzystać z mypy w bardzo podstawowym stopniu.
Zacząłem przeglądać kod jako kompletny outsider i zauważyłem kilka zmiennych których typów nie mogłem wydedukować. Przepatrzyłem miejsca gdzie są odczytywane/zapisywane i jedyne wywnioskowałem że niektóre z nich to dicty, ich klucze to stringi lub czasami tuple a wartości to jakieś nieotypowane zmienne.
Dlaczego, nawet przy tak dużych projektach ludzie wzbraniają się przed używaniem typów?
Przecież brak jasno określonych typów zmiennych rodzi problemy i utrudnia osobom zrozumienie kodu i pomaganie.
Od kiedy w pracy zaczęliśmy korzystać z duetu ruff + mypy strict, ilość błędów znacząco zmniejszyła się i dziwi mnie że duże pythonowe projekty nie korzystają z mypy, choć jest dostępny już kilka/kilkanaście lat i jest potwornie przydatny
#python
#programowanie
@qarmin
Dlaczego, nawet przy tak dużych projektach ludzie wzbraniają się przed używaniem typów?
Bo życie to nie tutorial a projekty rozwijają ci którym się chce a nie ci którzy są najbardziej kompetentni.
@wombatDaiquiri - rozumiem, że mówisz o projektach Open Source.
W profesjonalnych projektach nikomu się nie chce
@wombatDaiquiri @koszotorobur Zarówno działam profesjonalnie jak i w projektach open-source więc mogę mieć nieco spaczone podejście, ale wystarczająco wiele razy widziałem błędy związane z brakiem typów, by wiedzieć, że jednorazowy wysiłek w ich dodanie jest dużo mniejszy niż użeranie się z tymi błędami.
@qarmin - i tak właśnie motywuję potrzebę wprowadzenia typów - na początku mnie devy nienawidzą, by później przyznać mi rację - BTW tak samo jest z kontenerami
@qarmin ja się z Tobą zgadzam, ale co z tego? xD niektórzy nie wiedzą, niektórzy nie wierzą, niektórzy wprost sabotują bo wyznają inne wartości i tak to się żyje w tym programowaniu
@wombatDaiquiri - ale co to za życie programisty 15K
Dlaczego, nawet przy tak dużych projektach ludzie wzbraniają się przed używaniem typów?
@qarmin Gdybym chciał używać typów, nie programowałbym w Pythonie.
@groman43 - takie podejście sprawdza się jedynie jak robisz coś małego dla siebie - w profesjonalnych projektach robionych przez zespoły ludzi typy się świetnie sprawdzają
@qarmin - weź mmie nawet nie triggeruj.
Ja nawet nie jestem programistą z zawodu i jak wchodzę w Pythonowy projekt jako SRE to zadziwia mnie w jak kiepskimi jest stanie - nawet te pozaczynane niedawno.
Do tego biznes chce widzieć nowe funkcjonalności a nie wydawać kasę na refaktoryzację tego co już działa
Podobnie mam z Type Script i "any" lub "object". Dla wyjaśnienia, TS pozwala ale nie wymusza typowanie. Więc mam takie WTF gdy ktoś poświęcił chwilę na wpisanie że coś jest/zwraca "cokolwiek" . Gdzie tu jest jakaś korzyść?
@szczekoscisk jak dobrze pamiętam, to czasami kompilator TS potrafi się przyczepić, że typ jest nieokreślony, więc żeby się nie czepiał to daje się any i fajrant ( ͡° ͜ʖ ͡°)
Przy czym dotyczy to głównie sytuacji, kiedy ktoś używa TS bo jest modny albo mu kazali.
Nie kojarzę by sam kompilator TS wymuszał typowanie (przynajmniej na szybko nie kojarzę takich przypadków), możliwe że widziałeś sytuacje gdzie "tslint" czegoś się czepiał.
chyba strict mode wymaga typów. Chyba, że coś mieszam bo od dawna zawsze staram się wszystko typować
Myślę, że to przez to, że lutris to dość stary projekt, a typowanie w pythonie to jednak coś dość nowego. Pamiętam, że z 10 lat temu używałem już lutrisa.
@dotevo Type hints były dostępne już w 2006 roku - https://peps.python.org/pep-3107/, uszczegółowienie/ dodanie do typów do std 2014/2015 - https://peps.python.org/pep-0484/
Lutris to projekt z 2013 roku - https://github.com/lutris/lutris/commits/master/?since=2013-12-01&until=2013-12-03
@qarmin Gdy po kilku dobrych latach z C++ zacząłem w robocie pisać w Pythonie to nie mogłem się odnaleźć i strasznie mi typów brakowało. A później się przyzwyczaiłem i juz miałem wszystko w dupie ( ͡° ͜ʖ ͡°) Może dlatego. W większości przypadków da się (przynajmniej u mnie) typ spokojnie wyczaić z kodu. Raz na ruski rok się nie da i wtedy używam debuggera.
Zaloguj się aby komentować