Pepa vyrobí .size(), Franta vyrobí .length(), Honza vyrobí .len() ... a pak se v tom vyznej (to už se mi stalo).
Generické věci využívající generické protokoly nemusí bordelit třídní namespace a zbytečně komplikovat dědičnost. Například len() se podívá, jestli si třída implementuje __len__ a pokud ne, tak si ji projde a spočítá počet prvků, takže funguje s čímkoliv, co je iterable. Ditto ostatní takové věci. Ale Control-Space Enter, já vím.
Vidíte, a já měl vždy za to, že to, co vy označujete za bordelení, je cílenou strukturou z důvodu polymorfismu, kdy metoda "len" je implementována ve všech iterable a se stejným názvem, využiju-li k tomu ještě sdílení kódu dědičností, může to stačit napsat jednou. Místo toho funkce "len" přesouvá odpovědnost z objektů do sebe, kdy ve vlastní režii řeší (se snaží řešit), co že je iterable a jakou metodou sděluje délku. Co třídy neodvozené z iterable? Co třídy, které mají zároveň size i len s různým významem? Tohle je bordelení!
Navíc python do jisté míry podporuje funkcionální styl programování, kde se přesně takové věci dělají. A když už mám jazyk, co takové programování podporuje, tak proč bych to nevyužil? Šetří to psaní, lépe se píšou výrazy ve funkcionálním stylu.
Funkcionální programování, nebo jen funkcionální zápis?
To lepší psaní asi nebude objektivně doložitelné, že?
...Když si někde vytvořím _my_private, tak by v code review mělo být nad slunce jasné, že když někdo napíše neco._my_private, že je něco asi špatně.
Bude to v code review stačit? Co interpret, ví o tom?