556
Vývoj / Re:Doporučte programovací jazyk pro Windows
« kdy: 09. 03. 2020, 12:20:21 »Jistěže lze kdykoliv zjistit typ objektu. Bohužel to pak dopadá třeba takhle https://github.com/dddomodossola/remi/blob/master/remi/gui.py#L1914 . V javě (a spoustě jiných jazyků) by se v této situaci (pokud bych to nechtěl celé postavit jinak, víc objektově) udělalo více metod append s různými vstupními parametry (Map, Collection, Widget) a každá by se chovala jinak. Jak to udělat v pythonu? Udělat metody appendDict, appendCollection, appendWidget? Nebo jednu metodu, která ale ve skutečnosti dělá pomocí if elseif... tři různé věci, jak je to v ukázce.
Nicméně samozřejmě nesouhlasím, že by se java neměla od pythonu co učit. Chybějící mixiny jsou zásadní nedostatek, o který zakopávám v jednom kuse. A defaultní metody interfaců to zdaleka neřeší, protože jsou public a interfacy nemají vnitřní proměnné. Tuples by se sakra hodily. Rovněž nemožnost volat kód s checkovanými výjimkami ve streamu je zásadní omezení modernizace legacy kódu. Končí to obalováním bloků runtime výjimkami, což je zbytečný balast. Python to v generátorech neřeší, příjemně se používají.
Na druhou stranu chápu, že java musí držet nějakou kompatibilitu a přidávání nových vlastností není úplně jednoduché. Přechod python2 -> python3 byl úplně špatně, to mi nikdo nevymluví. Ale i java má své problémy, technické změny v javě 9 zasekly spoustu projektů na osmičce (nepočítám-li změnu licence).
O kvalitě vývoje v enterprise si nedělám iluze :-)
tady by mozna stalo za to pouzit keyword argumenty? Rozhodovaci logika by se dost zjednodusila. Asi bych jeste oddelil ty dve cinnosti. Na splosteni te zanorene vstupni struktury bych pouzil nejakou generickou funkci. Na zpracovani jednotlivich key value paru bych pouzil oddelenou funkci. Na testovani vice pribuznch typu se da pouzit neco jako isinstance Iterable nebo isinstance Sequence a pod.