Přepsání serveru v Javě

dustin

Re:Přepsání serveru v Javě
« Odpověď #90 kdy: 21. 06. 2017, 13:17:05 »

....
Pattern matching: http://openjdk.java.net/jeps/305
Declaration-site variance: http://openjdk.java.net/jeps/300

Láďo díky, velice praktické a užitečné. Škoda, že si na javu 10 ještě počkáme... Ještě kdyby byly rozumnější mixiny, defaultní metody interfacu (i privátní v java 9) jsou pořád jen napůl cesty. A samozřejmě opravdová generika s reifikací, ale to je klasika...


Re:Přepsání serveru v Javě
« Odpověď #91 kdy: 21. 06. 2017, 13:21:07 »
Osobně dávám přednost uvedení typu proměnné, vidím ji na první pohled, narozdíl např. při přiřazení vrácené hodnoty metody.

A diamant taky nepouzivas?

Proměnnou včetně typu i přiřazení vyrobí IDE jednou klávesovou zkratkou, jen následně uvedu její název, přičemž mi často rovnou nabídne ten správný. Přijde mi, že na to má Idea nějakou heuristiku učící se z mého stylu pojmenování proměnných, protože se často trefuje hned první nabídkou.
Ano, to pojmenovavani ma IntelliJ dobre zvladnute. IMO o duvod mene jeste mit typ vypsany. (Samozrejme jak kdy. Nekdy je lepsi nepouzivat vsechno. Ale u lokalnich promennych bych vetsinou inferenci preferoval - pro psani i cteni)

Ukecanost javy při použití slušného IDE nijak nezdržuje.

Mne to (casto, ne vzdy) vadi i pri cteni. Podobne jako i bez for each cyklu nebylo psani cyklu tezke - idea ho generovala. Jen kod neni tak primocare citelny.

dustin

Re:Přepsání serveru v Javě
« Odpověď #92 kdy: 21. 06. 2017, 13:37:08 »
A diamant taky nepouzivas?

?? Proč bych jej nepoužíval? Konkrétní typ vidím na druhé straně.

Citace
Ano, to pojmenovavani ma IntelliJ dobre zvladnute. IMO o duvod mene jeste mit typ vypsany. (Samozrejme jak kdy. Nekdy je lepsi nepouzivat vsechno. Ale u lokalnich promennych bych vetsinou inferenci preferoval - pro psani i cteni)

Já mám uvedené typy rád. Ale každý to má jinak, proč ne.

Citace
Podobne jako i bez for each cyklu nebylo psani cyklu tezke - idea ho generovala. Jen kod neni tak primocare citelny.

For-each generuje samozřejmě taky včetně správného jména a typu položky (iter + tab), ale to se běžně používá.

Re:Přepsání serveru v Javě
« Odpověď #93 kdy: 21. 06. 2017, 13:47:58 »
Citace
Podobne jako i bez for each cyklu nebylo psani cyklu tezke - idea ho generovala. Jen kod neni tak primocare citelny.

For-each generuje samozřejmě taky včetně správného jména a typu položky (iter + tab), ale to se běžně používá.

Asi jsem to nerekl dost jasne, takze znovu - ze IDE neco generuje neni moc dobra omluva pro to si to vygenerovat, pokud existuje citelnejsi varianta. Jen se ocividne nedohodneme, zda byva lokalni typova inference ta citelnejsi varianta ;)

dustin

Re:Přepsání serveru v Javě
« Odpověď #94 kdy: 21. 06. 2017, 13:54:24 »
Jen se ocividne nedohodneme, zda byva lokalni typova inference ta citelnejsi varianta ;)

Ano, a protože osobně dávám přednost variantě s typy, rád si to nechám vygenerovat, ručně bych to napsal úplně stejně, jen podstatně pomaleji. Již v mém prvním příspěvku na toto téma jsem uvedl

Citace
Osobně dávám přednost uvedení typu proměnné


Kit

Re:Přepsání serveru v Javě
« Odpověď #95 kdy: 21. 06. 2017, 13:56:56 »
U lokálních objektů přece také potřebuji znát rozhraní, abych věděl, které metody toho objektu mohu volat. Přece to nebudu dolovat reflexí.

Aha, ty jsi ani nepochopil, co je to ta typova inference.

Kód: [Vybrat]
val foo = new Foo(bar);
foo je typu Foo. Rozdil je v tom, ze jsi nemusel Foo psat dvakrat, typ foo za tebe odvodil (inferoval) prekladac. Zadnou reflexi nepotrebujes.

A co třeba tohle?
Kód: [Vybrat]
val foo = (cond) ? new Foo() : new Bar();
foo.method();

Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?

dustin

Re:Přepsání serveru v Javě
« Odpověď #96 kdy: 21. 06. 2017, 13:57:49 »
Mimochodem lze očekávat, že po zavedení lokální typové inference bude idea nabízet generování obou variant, takže opět to půjde rychleji.

Re:Přepsání serveru v Javě
« Odpověď #97 kdy: 21. 06. 2017, 14:17:46 »
Mimochodem lze očekávat, že po zavedení lokální typové inference bude idea nabízet generování obou variant, takže opět to půjde rychleji.

O tom nepochybuji... Extract local variable už teď funguje v IntelliJ celkem pěkně v obou variantách (final i nefinal).

dustin

Re:Přepsání serveru v Javě
« Odpověď #98 kdy: 21. 06. 2017, 14:35:56 »
Celou dobu to tu říkám :-)

Re:Přepsání serveru v Javě
« Odpověď #99 kdy: 21. 06. 2017, 15:07:53 »
A co třeba tohle?
Kód: [Vybrat]
val foo = (cond) ? new Foo() : new Bar();
foo.method();

Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?

A co bys tak rekl? Jaky typ ma tenhle vyraz (cond) ? new Foo() : new Bar();? Nehledej slozitost, kde neni. Nebo se to alespon douc.

Kit

Re:Přepsání serveru v Javě
« Odpověď #100 kdy: 21. 06. 2017, 15:25:39 »
A co třeba tohle?
Kód: [Vybrat]
val foo = (cond) ? new Foo() : new Bar();
foo.method();

Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?

A co bys tak rekl? Jaky typ ma tenhle vyraz (cond) ? new Foo() : new Bar();? Nehledej slozitost, kde neni. Nebo se to alespon douc.

Za normálních okolností uvedu na levé straně rozhraní a je to.
Kód: [Vybrat]
Interface foo = (cond) ? new Foo() : new Bar();
foo.method();

Možná si tohle umí inference udělat sama, zatím jsem ji nepotřeboval.

Re:Přepsání serveru v Javě
« Odpověď #101 kdy: 21. 06. 2017, 15:47:38 »
Za normálních okolností uvedu na levé straně rozhraní a je to.
Kód: [Vybrat]
Interface foo = (cond) ? new Foo() : new Bar();
foo.method();

A jake "je to"? Kazdy vyraz ma nejaky typ, jestli je nasledne pouzity nebo neni pouzity v inferenci je uplne jedno. Zrovna s interfacem ti tohle nemuze v Jave obecne projit.

ALe libi se mi, jak se zacnes dohadovat o veci, o ktere jsi jeste pred hodinou ani nevedel, ze existuje/co dela.

Kit

Re:Přepsání serveru v Javě
« Odpověď #102 kdy: 21. 06. 2017, 16:13:59 »
Za normálních okolností uvedu na levé straně rozhraní a je to.
Kód: [Vybrat]
Interface foo = (cond) ? new Foo() : new Bar();
foo.method();

A jake "je to"? Kazdy vyraz ma nejaky typ, jestli je nasledne pouzity nebo neni pouzity v inferenci je uplne jedno. Zrovna s interfacem ti tohle nemuze v Jave obecne projit.

V Javě to funguje normálně, stejně jako v PHP. Je to standardní součástí designu Javy. Zkus si to.

Re:Přepsání serveru v Javě
« Odpověď #103 kdy: 21. 06. 2017, 16:37:42 »
Za normálních okolností uvedu na levé straně rozhraní a je to.
Kód: [Vybrat]
Interface foo = (cond) ? new Foo() : new Bar();
foo.method();

A jake "je to"? Kazdy vyraz ma nejaky typ, jestli je nasledne pouzity nebo neni pouzity v inferenci je uplne jedno. Zrovna s interfacem ti tohle nemuze v Jave obecne projit.

V Javě to funguje normálně, stejně jako v PHP. Je to standardní součástí designu Javy. Zkus si to.

Eh, v tomhle (Interface foo muze dodat ve specifickem pripade vic informace nez samotna inference typu) mas pravdu. To jsem pomotal, omlouvam se.

Kit

Re:Přepsání serveru v Javě
« Odpověď #104 kdy: 21. 06. 2017, 16:53:48 »
V Javě to funguje normálně, stejně jako v PHP. Je to standardní součástí designu Javy. Zkus si to.

Eh, v tomhle (Interface foo muze dodat ve specifickem pripade vic informace nez samotna inference typu) mas pravdu. To jsem pomotal, omlouvam se.

V pohodě. Inference je v PHP běžná, jen jsem nevěděl, že se dostala už i do Javy.