Python - zbožňovaný lidmi?

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #300 kdy: 13. 12. 2017, 20:23:48 »
Kazdopadne s https://github.com/pavhofman/aio/blob/master/sources/treesource.py#L41 vam nepomuze nic.

Zrovna ten doporučený cast to řeší. Stačí pak jen

Kód: [Vybrat]
self._sendParentNodeInfo(cast(msg, IntegerMsg).value)
Pro kontrolu typehintů opravdu stačilo jen přes pip3 doinstalovat flake8-mypy. Bohužel hláška "T484 Incompatible types in assignment (expression has type "Optional[str]", variable has type "None")" mi nedává smysl, protože od toho specifikuju Optional, aby tam mohl být None. Pycharm Optional samozřejmě kontroluje správně (bez něj explicitní None neakceptuje).

Generika ani abstraktní metodu mypy nepozná (pycharm alespoň tu abstraktní metodu, která je pro mě  důležitější).

Nevidím v používání tohoto v pycharmu žádný přínos, jeho interní linter je interaktivní a odchytí toho víc. Bohužel pořád jsou to všechno workaroundy kolem chybějících uvedených typů a při vývoji je to hodně znát.


Ivan Nový

Re:Python - zbožňovaný lidmi?
« Odpověď #301 kdy: 13. 12. 2017, 20:24:51 »
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.

No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.

refactoring

Re:Python - zbožňovaný lidmi?
« Odpověď #302 kdy: 13. 12. 2017, 20:33:59 »
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.

No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.

Odborník na všechno nepřekvapil. Ne, takhle se opravdu nevyvíjí. Máš nějakou menší architekturu a třeba 30 rozhraní, které ti to vše drží. Pak přijde zákazník, že by chtěl ještě takovou maličkost. Tak prostě musíš půlku věcí předělat a zbytek dodělat. Pak fakt nechceš skriptovací Python, kde nic moc nefunguje. Java je fakt pro profíky ve vývoji, protože se tam používají věci, které v Pythonu vůbec "nepotřebuješ".

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #303 kdy: 13. 12. 2017, 21:08:43 »
Kazdopadne s https://github.com/pavhofman/aio/blob/master/sources/treesource.py#L41 vam nepomuze nic.

Zrovna ten doporučený cast to řeší. Stačí pak jen

Kód: [Vybrat]
self._sendParentNodeInfo(cast(msg, IntegerMsg).value)
Pro kontrolu typehintů opravdu stačilo jen přes pip3 doinstalovat flake8-mypy. Bohužel hláška "T484 Incompatible types in assignment (expression has type "Optional[str]", variable has type "None")" mi nedává smysl, protože od toho specifikuju Optional, aby tam mohl být None. Pycharm Optional samozřejmě kontroluje správně (bez něj explicitní None neakceptuje).

Generika ani abstraktní metodu mypy nepozná (pycharm alespoň tu abstraktní metodu, která je pro mě  důležitější).

Nevidím v používání tohoto v pycharmu žádný přínos, jeho interní linter je interaktivní a odchytí toho víc. Bohužel pořád jsou to všechno workaroundy kolem chybějících uvedených typů a při vývoji je to hodně znát.

můžete poslat to přiřazení u kterého to hlásí?

Ivan Nový

Re:Python - zbožňovaný lidmi?
« Odpověď #304 kdy: 13. 12. 2017, 21:13:03 »
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.

No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.

Odborník na všechno nepřekvapil. Ne, takhle se opravdu nevyvíjí. Máš nějakou menší architekturu a třeba 30 rozhraní, které ti to vše drží. Pak přijde zákazník, že by chtěl ještě takovou maličkost. Tak prostě musíš půlku věcí předělat a zbytek dodělat. Pak fakt nechceš skriptovací Python, kde nic moc nefunguje. Java je fakt pro profíky ve vývoji, protože se tam používají věci, které v Pythonu vůbec "nepotřebuješ".

Proč byste musel něco předělávat? To se mi často nestává, většinou mi stačí věc změnit na jednom místě. Vám ne? Pokud je rozhraní logicky úplné a jeho uzávěr dostatečně pokrývá aplikační doménu, předělávat není potřeba. Občas ho stačí rozšířit.

Ovšem když to jen tak napatláte, s vědomím, že to později refaktorujete, není divu.



refactoring

Re:Python - zbožňovaný lidmi?
« Odpověď #305 kdy: 13. 12. 2017, 21:18:11 »
OMG, všichni ví, že Python refactoring neumí, tak nevím, co pořád řešíte. Dustine, nedělej lopatu. V Javě se mění při jedné změně rozhraní třeba 400 souborů a nikdo neřeší, jestli je to dobře. Protože prostě je. V Pythonu bys půlku projektu musel začít projíždět ručně jak v roce 1980 :D Je to jazyk pro patlaly, kteří programovat neumí.

No to je spíš ta Java, ne, když se v ní refaktoruje. Refaktorování je patlání. Napatláte nějak rozhraní, pak, když přijdete na to, že je nesmysl, tak to pomocí refaktorování přepatláte bez nějaké odpovědnosti, protože v případě potřeby, to přepatláte zase jinak.

Odborník na všechno nepřekvapil. Ne, takhle se opravdu nevyvíjí. Máš nějakou menší architekturu a třeba 30 rozhraní, které ti to vše drží. Pak přijde zákazník, že by chtěl ještě takovou maličkost. Tak prostě musíš půlku věcí předělat a zbytek dodělat. Pak fakt nechceš skriptovací Python, kde nic moc nefunguje. Java je fakt pro profíky ve vývoji, protože se tam používají věci, které v Pythonu vůbec "nepotřebuješ".

Proč byste musel něco předělávat? To se mi často nestává, většinou mi stačí věc změnit na jednom místě. Vám ne? Pokud je rozhraní logicky úplné a jeho uzávěr dostatečně pokrývá aplikační doménu, předělávat není potřeba. Občas ho stačí rozšířit.

Ovšem když to jen tak napatláte, s vědomím, že to později refaktorujete, není divu.

Sorry, kámo. Ke všemu tady píšeš píčoviny, které nemají hlavu ani patu a budeš mi tvrdit, že umíš vyvíjet? To fakt nevyjde. Takže dík za info, ale jsi na úrovni těch lemplů tady, kteří tvrdí, že v Pythonu jdou dělat větší projekty. Oni totiž nikdy nic nedělali a jen blbě kecají.

Určitě budu mít rozhraní hotové na první nástřel...

Ivan Nový

Re:Python - zbožňovaný lidmi?
« Odpověď #306 kdy: 13. 12. 2017, 21:32:46 »
@refaktoring

A čím tu velikost projektu měříte? Když budete po sté psát podobné rozhraní, jen s malými změnami, tak to zrovna optimální není.

Ale samozřejmě, záleží na prioritách, pokud jde o to, rychle napatlat co nejvíce kódu, pak se refaktorování hodí, a ano tak se vyvíjí, je to ale dáno jen dnešním průmyslovým charakterem vývoje. Nic špatného na tom není, ale vědu bych z toho nedělal.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #307 kdy: 13. 12. 2017, 21:34:52 »
gll:

Kód: [Vybrat]
    def initMakeAvailable(self, rootPath: Path, label: str, deviceName: Optional[str]) -> 'FileSource':
        xxx
        self._deviceName = deviceName
        xxx

Nelíbí se mu, že v konstruktoru třídy (__init()__) bylo self._deviceName = None. Bere to jako typ None. Nevím.

Ale pravda je, že našel jeden výskyt, kde se jako parametr metody method(param:str) posílá field, který je původně v konstruktoru nastavený typem Optional[str]. Před voláním method(param) je to vždy již nenulový str, ale chápu, že se mu to úplně nelíbí. S tímhle by byl asi problém všude....

refactoring

Re:Python - zbožňovaný lidmi?
« Odpověď #308 kdy: 13. 12. 2017, 21:48:29 »
@refaktoring

A čím tu velikost projektu měříte? Když budete po sté psát podobné rozhraní, jen s malými změnami, tak to zrovna optimální není.

Ale samozřejmě, záleží na prioritách, pokud jde o to, rychle napatlat co nejvíce kódu, pak se refaktorování hodí, a ano tak se vyvíjí, je to ale dáno jen dnešním průmyslovým charakterem vývoje. Nic špatného na tom není, ale vědu bych z toho nedělal.

A co na to říkají ještěří lidé? Určitě by k dané věci také měli velmi zajímavý názor založený jen na fantazii a pohádkách.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #309 kdy: 13. 12. 2017, 22:00:56 »
gll:

Kód: [Vybrat]
    def initMakeAvailable(self, rootPath: Path, label: str, deviceName: Optional[str]) -> 'FileSource':
        xxx
        self._deviceName = deviceName
        xxx

Nelíbí se mu, že v konstruktoru třídy (__init()__) bylo self._deviceName = None. Bere to jako typ None. Nevím.

Ale pravda je, že našel jeden výskyt, kde se jako parametr metody method(param:str) posílá field, který je původně v konstruktoru nastavený typem Optional[str]. Před voláním method(param) je to vždy již nenulový str, ale chápu, že se mu to úplně nelíbí. S tímhle by byl asi problém všude....

neměl by v tom konstruktoru být specifikovaný typ?

Kód: [Vybrat]
self._deviceName = None # Optional[str]

Ivan Nový

Re:Python - zbožňovaný lidmi?
« Odpověď #310 kdy: 13. 12. 2017, 22:05:12 »
@refaktoring

Vy refaktorujete a nevíte proč, berete to jako zjevené dogma :-))) Nic proti vaší metodice nemám, je potřebná, protože je třeba rychle napatlat spousty kódu a místo věci dopředu promýšlet, je ekonomicky efektivnější, je ad hoc refaktorovat. Jinak to dnes nejde.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #311 kdy: 13. 12. 2017, 22:06:37 »
To jsem již předtím zkoušel, nic se nezměnilo. Nechám to plavat, IDE s tím problém nemá. Ale díky.

PetrN

Re:Python - zbožňovaný lidmi?
« Odpověď #312 kdy: 13. 12. 2017, 22:26:51 »
Mám tomu rozumět tak (podle některých diskutujících), že refaktoring je zbytečný a dělá se jen na "zpatlaném" kódu?

To mi chcete tvrdit, že se mám stydět za to, že součástí mého vývoje je refactoring? A častý refactoring?

Co proboha píšete za kód, že se dokážete vyhnout refactoringu? Něco jako program pro čekárny ordinací, kde se na obrazovce objevuje zpráva: "Vítejte v naší ordinaci, posaďte se a vyčkejte příchodu sestry"?

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Python - zbožňovaný lidmi?
« Odpověď #313 kdy: 13. 12. 2017, 22:39:24 »
Co proboha píšete za kód, že se dokážete vyhnout refactoringu?

Myslím, že tohle je spíš o individuálním přístupu. Jsou vývojáři, co si věci dopředu pečlivě zanalyzují a vymyslí, než něco napíšou... IMO oba způsoby mají něco do sebe.
« Poslední změna: 13. 12. 2017, 22:44:12 od ByCzech »

Honza

Re:Python - zbožňovaný lidmi?
« Odpověď #314 kdy: 13. 12. 2017, 22:49:16 »
Co proboha píšete za kód, že se dokážete vyhnout refactoringu?

Myslím, že tohle je spíš o individuálním přístupu. Jsou vývojáři, co si věci dopředu pečlivě zanalyzují a vymyslí, než něco napíšou... IMO oba způsoby mají něco do sebe.
... v utopickém světě, kde se nerozšiřuje ani nemění zadání... Jinak je to best practice i pro takové vývojáře!