V principu je to tak, akorat, ze jsem jeste posbiral nekolik dalsich napadu a zapsal je od jednoho skriptu.
Co se tyce zajmu - pokud nekdo taky potrebuje commandline nastroj, kterym si debuguje nejaky ten svuj kod, tak ma stejnej problem, jako jsem mel ja. github.com/jaromrax/nczmq . No a pokud by to nekdo chtel nekam posunout, tak pro me jen dobry.
Teda nezlob se na mě, ale ten kód by neměl nikomu sloužit jako inspirace. Když jsem na to pustil linter, tak jsem myslel že vybuchne, sto errorů a 26 warning, to nemluvím o logických chybách.
Kdybys tam měl těch chyb míň, tak bych ti na to asi napsal nějaký code review řádku po řádce, ale tohle kromě toho že to nějak funguje, je po všech ostatních ohledech ukázka toho, jak by se v pythonu neprogramuje. Od syntaxe, kterou píšeš blbě (koukni se co je to PEP8), po to že to máš celé rozpláclé na úrovni modulů a smíchané s user-interfacem. Inicializace argumentů by měla být v if __name__ == "__main__", jinak se inicializují vždycky když to chceš importovat. Celé by to mělo být rozlámané do funkcí. Ty inline ify jsou prasárna, která jen ubírá na čitelnosti. Tohle fakt ne; if EXITME:quit. Nejen že je to nečitelná prasárna, ale chybí ti tam závorky, quit je volání funkce. Snažíš se ušetřit budget za řádek, nebo co?
Dokumentační komentáře se takhle v pythonu nedělaj. Když odychátáváš výjimky, tak na ně taky reaguj jinak než vypsáním že došlo k chybě - kód pak normálně pokračuje a padne o řádek dál, takže to bylo celé úplně k ničemu.
Nauč se používat logging a nastavuj debug level v něm, pokud chceš debug hlášky. Těch sto if podmínek tam všude je .. fakt špatně. Kdyby to mělo k něčemu být, tak bys to měl rozdělit do menších funkcí. Jenže celé to jen používá základní api volání zmq, takže si neumím představit, že by to k něčemu bylo.
Jako já nemám nic proti tomu že sis to tak napsal, každej nějak testuje, ale měj soudnost a nedělej z toho příklady na netu.
Diky za zpetnou vazbu. Pylint jsem neznal, velmi zajimave. Legracni jsou ty zakazy mezer a naming style, dobry jsou ty upozorneni na redefinice apod. Kulturu programovani v pythonu skutecne neznam a nektere praktiky budou nadmiru uzitecne. To byla ta zajimava cast.
Ta druha cast je vlastne taky zajimava, ale takovym jinym zpusobem
- Ze si neumis predstavit, ze by to k necemu bylo : je v poradku, kdyz to nevidis, dalo by se to asi resit dotazem.
- Jestlis mel pocit, ze tu prezentuji nejake priklady na netu, tak to byl spatny pocit, nevim, cim jsem ho mohl vyvolat. Opakovat myslenku, ze postradam neco jako nc se superpowers uz dal nebudu.
Kdyz zhodnotim svuj pokus - vlastne se potkavam casto se situaci, kdy se lide fixuji na formu a myslenka jim utece, takze prekvapen nejsem. Pozitivni reakci nevidim, pohorseni budit za kazdou cenu nemusim. Tak snad nekdy jindy na nejakem jinem foru.
> Diky za zpetnou vazbu. Pylint jsem neznal, velmi zajimave. Legracni jsou ty zakazy mezer a naming style, dobry jsou ty upozorneni na redefinice apod. Kulturu programovani v pythonu skutecne neznam a nektere praktiky budou nadmiru uzitecne. To byla ta zajimava cast.
Pylint, pyflakes, pep8, sonarlint. Doporučuju všechny čtyři utility najednou.
> - Ze si neumis predstavit, ze by to k necemu bylo : je v poradku, kdyz to nevidis, dalo by se to asi resit dotazem.
To bylo myšleno v kontextu repozitáře. Je mi asi jasné, že tobě to k něčemu bude, ale aby to mohl člověk použít, tak by toho musel přepsat tolik, že je mnohem jednodušší to napsat prostě na zelené louce.
> - Jestlis mel pocit, ze tu prezentuji nejake priklady na netu, tak to byl spatny pocit, nevim, cim jsem ho mohl vyvolat. Opakovat myslenku, ze postradam neco jako nc se superpowers uz dal nebudu.
Tak když přijdeš do diskuze a doslova to nabídneš jako ukázku, tak se těžko můžeš divit, že takový pocit mám, že.
> Kdyz zhodnotim svuj pokus - vlastne se potkavam casto se situaci, kdy se lide fixuji na formu a myslenka jim utece, takze prekvapen nejsem. Pozitivni reakci nevidim, pohorseni budit za kazdou cenu nemusim. Tak snad nekdy jindy na nejakem jinem foru.
Hele, děláš úplně klasickou chybu, kdy se ztotožňuješ se svým kódem. Tu myšlenku chápu. Je jasná a nevidím na ní nic co by stálo za zmínku, ale to je můj problém a ostatně myšlenku jsem vůbec nekritizoval. Kód má mnoho rozměrů kvality. I kdyby ta myšlenka byla sebekvalitnější, tak dimenze architektury, rozložení, čitelnosti a pár dalších už kvalitní vážně nejsou. A já tě přeci nehejtuji, snažím se tě na to pouze relativně konstruktivně upozornit, píšu to slušně, vypíchl jsem body co mi konkrétně přijdou nedostatečné a tak. To si neber jako útok na tvojí osobu.
Za me v klidu. Zkusil jsem najit nekoho se stejnym zajmem a vyssi kulturou kodovani. A nasel nekoho s vyssi kulturou kodovani.
Nerad davam rady, ale po poslednim odstavci mam pocit, ze jednu zkusim. Jestli Te mrzi zes byl mozna trochu "vostrej" tak napis "promin", je to strucny, chlapsky a (s normalnimi lidmi) to vyborne funguje. Jestli citis formu kritiky adekvatni, ja s Tvym pocitem problem nemam, beru Te jakej jsi a vysvetlovat nic nepotrebuju. Treti moznost je, ze jen chces zmenit moji reakci - pak sam vidis, ze stejne maris cas.
Za mě se z pythonu stává jazyk který se dá slušně reviewovat, až když je to správně i podle mypy. Nuti to totiz myslet o tom jakeho je ktera promenna typu a tedy si spravne typy rozvrhnout. A pokud si clovek nadefinuje semanticke typy (jednoduchy priklad: Name, Surname) ze stejneho zakladniho typu, tak mu to pak muze kontrolovat, ze napriklad omylem neprohodil treba parametry funkce (greet_person(surname, name)).