Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)

Kit

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #60 kdy: 20. 08. 2017, 17:39:54 »
C# má na můj vkus příliš mnoho zbytečného syntaktického cukru, což ho činí méně přehledným a svádí k nežádoucím praktikám (např. přímý přístup k properties).

Nie je to nahodou ten implicitny C# setter, kde to vyzera ako priradenie, ale je to v skutocnosti setter?

Ano, tento setter, který patří k bad practices. Umožňuje přístup k atributům objektu, byť zprostředkovaně. Tím porušuje mj. i SRP, tedy pokud objekt má víc než jeden atribut. A samozřejmě tím porušuje zapouzdření.


gll

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #61 kdy: 20. 08. 2017, 17:43:06 »
C# má na můj vkus příliš mnoho zbytečného syntaktického cukru, což ho činí méně přehledným a svádí k nežádoucím praktikám (např. přímý přístup k properties).

Nie je to nahodou ten implicitny C# setter, kde to vyzera ako priradenie, ale je to v skutocnosti setter?

což je ohromná výhoda. Přidání setterů a getterů nezmění API, proto je nemusíte generovat všude od začátku. Porovnávat v dnešní době C# s Javou je nesmysl. Porovnejte C# s Kotlinem.

Kit

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #62 kdy: 20. 08. 2017, 18:04:25 »
což je ohromná výhoda. Přidání setterů a getterů nezmění API, proto je nemusíte generovat všude od začátku. Porovnávat v dnešní době C# s Javou je nesmysl. Porovnejte C# s Kotlinem.

Gettery a settery jsou přece součástí veřejného API. Proto je lepší je nemít aby to API bylo štíhlé.

Nemám nic proti privátním getterům a setterům, ty svůj význam mají a jsou zvnějšku skryty.

gll

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #63 kdy: 20. 08. 2017, 18:41:21 »
což je ohromná výhoda. Přidání setterů a getterů nezmění API, proto je nemusíte generovat všude od začátku. Porovnávat v dnešní době C# s Javou je nesmysl. Porovnejte C# s Kotlinem.

Gettery a settery jsou přece součástí veřejného API. Proto je lepší je nemít aby to API bylo štíhlé.

Nemám nic proti privátním getterům a setterům, ty svůj význam mají a jsou zvnějšku skryty.

Zkoušel jste vaše teorie použít v praxi? Nemůžete přistupovat k atributům přímo a gettery smí být pouze privátní. Mohl byste uvést příklad nějaké open source knihovny, která toto dodržuje?


Kit

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #64 kdy: 20. 08. 2017, 19:03:48 »
Zkoušel jste vaše teorie použít v praxi? Nemůžete přistupovat k atributům přímo a gettery smí být pouze privátní. Mohl byste uvést příklad nějaké open source knihovny, která toto dodržuje?

V praxi to běžně používám a funguje to. Nemohu za to, že tvůrci běžných knihoven nechápou princip zapouzdření. Pokud chci použít cizí knihovnu, napíši si na ni adaptér, abych ji zapouzdřil a mohl s ní pracovat ve stylu OOP.


Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #65 kdy: 20. 08. 2017, 19:58:29 »
Nemohu za to, že tvůrci běžných knihoven nechápou princip zapouzdření. Pokud chci použít cizí knihovnu, napíši si na ni adaptér, abych ji zapouzdřil a mohl s ní pracovat ve stylu OOP.
A nebo princip zapouzdření chápou, ale také chápou, že princip OOP sice hezky zpřehledňuje kód, ale neodpovídá tomu, jak funguje software v dnešním světě. Software se stále skládá ze dvou základních částí – data, která zpracováváte, a ta vlastní činnost, kterou s daty děláte, zpracování dat. Všude na vyšších úrovních je to oddělené – v databázích máte samotná data (případně můžete mít vedle i nějaký kód, ale pořád je to oddělené, nikdy nemáte v databázi data spojená s kódem); různé webové služby to mají opět oddělené – službě předáte jenom data, služba nad nimi něco provede a vrátí zase čistá data; při výměně souborů si opět předáváte jen data a každý má svůj kód na jejich zpracování; v cloudu se úzkostlivě dbá na to, abyste měl zvlášť kód a zvlášť data, protože pak se to dá dobře škálovat.

OOP se hodí pro interní implementaci těch služeb, ale nad tímhle nízkoúrovňovým kódem je stále dvojice datové struktury + procedury (služby).

Kit

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #66 kdy: 20. 08. 2017, 20:10:45 »
OOP se hodí pro interní implementaci těch služeb, ale nad tímhle nízkoúrovňovým kódem je stále dvojice datové struktury + procedury (služby).

Jistě, v knihovnách je často výhodnější použít strukturované programování a teprve nad nimi stavět své objekty, viz zmíněné adaptéry.

darkk

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #67 kdy: 20. 08. 2017, 20:35:13 »
Zkoušel jste vaše teorie použít v praxi? Nemůžete přistupovat k atributům přímo a gettery smí být pouze privátní. Mohl byste uvést příklad nějaké open source knihovny, která toto dodržuje?

V praxi to běžně používám a funguje to. Nemohu za to, že tvůrci běžných knihoven nechápou princip zapouzdření. Pokud chci použít cizí knihovnu, napíši si na ni adaptér, abych ji zapouzdřil a mohl s ní pracovat ve stylu OOP.

Tiez by som uvital priklad. Celkom si dokazem predstavit, ze by som fungoval bez getterov, ale bez setterov nie. Pokial chcem uzivatelovi zmenit meno a datum narodenia, tak si predsa nacitam z databazy tohoto uzivatela, prostrednictvom metod setName a setBirthdate mu nastavim nove hodnoty a nasledne pomocou metody save zapisem tieto zmeny do databazy.

Teda este by som to mohol riesit takymto sposobom:

Kód: [Vybrat]
$user->update(['name' => $name, 'birthday' => $birthday]);
Ale nieje to jedno? V principe musim vzdy objektu poslat data z vonku a je vcelku jedno ci to spravim prostrednictvom settrov, alebo to tomu objektu predam v kope ako argument metody (ine sposoby mi nenapadaju).

Tento druhy sposob mi mozno zabezpeci to, ze jediny sposob ako zmenit vnutorny stav objektu je prostrednictvom metody update, a tym padom mam istotu, ze aktualne data, kt. mam ulozene v instancii objektu su zhodne s tymi, ktore su v databaze, tzn. nemoze sa mi stat, ze prostrednictom setteru zmenim meno, update sa mi nepodari (pripadne by som vobec nevykonal update) a teda mohlo by sa mi stat, ze by som na vystup poslal data, ktore nezodpovedaju tomu, co mam v databaze. O to ide?

Kit

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #68 kdy: 20. 08. 2017, 20:47:46 »
Tiez by som uvital priklad. Celkom si dokazem predstavit, ze by som fungoval bez getterov, ale bez setterov nie. Pokial chcem uzivatelovi zmenit meno a datum narodenia, tak si predsa nacitam z databazy tohoto uzivatela, prostrednictvom metod setName a setBirthdate mu nastavim nove hodnoty a nasledne pomocou metody save zapisem tieto zmeny do databazy.

Pokud chci uživateli změnit jméno, vytvořím objekt uživatel, do konstruktoru mu dám kontejner s user_id, jménem a datem narození. Pak už jen zavolám metodu update() na modelu a uživatele mu dám jako parametr.

Objektem tedy nejsou data z databáze, ale nová data, protože původní data mě v tu chvíli už nezajímají - jsou reprezentována jen tím user_id.

Youda

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #69 kdy: 20. 08. 2017, 21:19:50 »
Tiez by som uvital priklad. Celkom si dokazem predstavit, ze by som fungoval bez getterov, ale bez setterov nie. Pokial chcem uzivatelovi zmenit meno a datum narodenia, tak si predsa nacitam z databazy tohoto uzivatela, prostrednictvom metod setName a setBirthdate mu nastavim nove hodnoty a nasledne pomocou metody save zapisem tieto zmeny do databazy.

Pokud chci uživateli změnit jméno, vytvořím objekt uživatel, do konstruktoru mu dám kontejner s user_id, jménem a datem narození. Pak už jen zavolám metodu update() na modelu a uživatele mu dám jako parametr.

Objektem tedy nejsou data z databáze, ale nová data, protože původní data mě v tu chvíli už nezajímají - jsou reprezentována jen tím user_id.

A protoze bean User nema jenom atributy id, name, surname ale este 50 dalsich, udelam si konstruktor, ktery bude mit 53 atributu, krome onech trech vsude nastrkam nully, update() bude chapat, ze null znamena nesahej na to.
Anebo si nejprve nactu ze stareho User onech 53 atributu a pak je nastrkam  do konstruktru noveho immutable User objektu. Jiny ucel nez tato opicarna to sice mit nebude, aspon se garbage collector nebude nudit.

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #70 kdy: 20. 08. 2017, 21:24:23 »
OOP se hodí pro interní implementaci těch služeb, ale nad tímhle nízkoúrovňovým kódem je stále dvojice datové struktury + procedury (služby).

Jistě, v knihovnách je často výhodnější použít strukturované programování a teprve nad nimi stavět své objekty, viz zmíněné adaptéry.
Já bych to viděl spíš opačně. V knihovnách je často výhodnější použít OOP a teprve nad ním stavět své služby (případně struktury).

Kit

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #71 kdy: 20. 08. 2017, 21:37:26 »
OOP se hodí pro interní implementaci těch služeb, ale nad tímhle nízkoúrovňovým kódem je stále dvojice datové struktury + procedury (služby).

Jistě, v knihovnách je často výhodnější použít strukturované programování a teprve nad nimi stavět své objekty, viz zmíněné adaptéry.
Já bych to viděl spíš opačně. V knihovnách je často výhodnější použít OOP a teprve nad ním stavět své služby (případně struktury).

To by bylo fajn, alespoň bych nemusel dělat ty adaptéry. Jenže takových knihoven moc není.

Kit

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #72 kdy: 20. 08. 2017, 21:42:35 »
A protoze bean User nema jenom atributy id, name, surname ale este 50 dalsich, udelam si konstruktor, ktery bude mit 53 atributu, krome onech trech vsude nastrkam nully, update() bude chapat, ze null znamena nesahej na to.
Anebo si nejprve nactu ze stareho User onech 53 atributu a pak je nastrkam  do konstruktru noveho immutable User objektu. Jiny ucel nez tato opicarna to sice mit nebude, aspon se garbage collector nebude nudit.

To není 53 atributů, ale 53 objektů a opravdu je nemusím načítat z databáze, pokud 3 z nich potřebuji změnit. Přece nebudu v DB přepisovat i sloupce, jejichž hodnotu měnit nechci.

DotNetGuy

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #73 kdy: 20. 08. 2017, 22:00:50 »
Nechce nějakej Linuxák přijít? https://budoucnost.aspnet.cz/

Youda

Re:Dobré IDE pro Python a Java (případně jaký další jazyk zvolit?)
« Odpověď #74 kdy: 20. 08. 2017, 22:53:20 »
Nechce nějakej Linuxák přijít? https://budoucnost.aspnet.cz/

Totak, pudu na nejakou valaskovu akci a skoncim nekde ve sklepe svazany s analnim kolikem zarazenym v zadeli.

 viz http://www.weblog.rider.cz/

Mykosofti technologie vubec pritahujou postavicky