C# .NET vs. Java?

whata

Re:C# .NET vs. Java?
« Odpověď #150 kdy: 24. 02. 2015, 18:41:16 »
Pro interface jsou rezervována všechna přídavná jména. Co na tom nechápeš?

Mě je to jasné již dávno. Pokud nezavedeš předpisy na tvorbu identifikátoru, tak nepoznáš zda se jedná o interface.
Rozdíl je prakticky jenom v tom, že tvůj předpis je "able" a u sousedů mají předpis "I". Lingvistické záležitosti mě nezajímají.

Ale to je přece nesmysl. Někdo (snad sadsa) na začátku uvedl nějaký příklad, ty ses toho chytil a udělal z toho konvenci. Ale tak to vůbec není!

Jméno pro interface má vyskytovat jeho funkci. Ano, v Javě jsou _v_některých_případech_ přídavná jména jako Serializable, Cloneable či Iterable, ale pouze tam, kde dávají smysl. Například Iterable identifikuje objekt, který je Iterovatelný. Ale List je rovněž interface a identifikuje objekt, který se chová jako seznam a je to podstatné jméno, protože seznam je podstatné jméno. Když půjdem do spring, je tam BeanFactory, který je interface a poskytuje funkce, které by člověk od správy fazolek. Je tam interface ApplicationContextAware, což je přídavné jméno, přeloženo jako být znalý aplikačního kontextu. Takže to není žádné dogma, používá se název, který vystihuje funkci.

To je obrovský rozdíl oproti maďarštině, kde se tupě následuje pattern pro jméno, bez toho, aniž by měl jakoukoli přidanou hodnotu, naopak je většinou kontraproduktivní.


Kolemjdoucí

Re:C# .NET vs. Java?
« Odpověď #151 kdy: 24. 02. 2015, 18:48:58 »
List je rovněž interface

Tak znovu a pomalu: Z písmenek "L", "i", "s", "t" se nedá dedukovat žádným způsobem že se jedná o interface.

atarist

Re:C# .NET vs. Java?
« Odpověď #152 kdy: 24. 02. 2015, 18:54:24 »
Je dobrým zvykem pojmenovávat interface přídavným jménem.

To platí i pro rozhraní datových struktur? Např. pro rozhraní seznamů, front, množin?

Ano i ne :-) Resp. dost programatoru cpe do svych aplikaci metody typu foobar(List<?>) i kdyz tam ma byt (a bohate dostacuje) napriklad Iterable. Navic si osobne myslim, ze JCF je sice na jednu stranu strasne fajn (je videt, ze u toho Josh Bloch premyslel), ale neni to OO-cisty navrh (mohl si dat vic zalezet :) a take zvolena jmena rozhrani apod. nejsou nejlepsi (List napriklad mohl byt klidne Sequence ;), duvod je asi zrejmy.

atarist

Re:C# .NET vs. Java?
« Odpověď #153 kdy: 24. 02. 2015, 18:57:17 »
Pro interface jsou rezervována všechna přídavná jména. Co na tom nechápeš?

Mě je to jasné již dávno. Pokud nezavedeš předpisy na tvorbu identifikátoru, tak nepoznáš zda se jedná o interface.
Rozdíl je prakticky jenom v tom, že tvůj předpis je "able" a u sousedů mají předpis "I". Lingvistické záležitosti mě nezajímají.

Nepoznas a vetsinou by to nemelo vadit ne? Myslim to tak, ze API byvaji popsana s vyuzitim interface a s konkretni implementaci toho rozhrani se setkas tak nekde pri volani konstruktoru nebo "tovarny" :)

perceptron

Re:C# .NET vs. Java?
« Odpověď #154 kdy: 24. 02. 2015, 18:58:10 »
Tak znovu a pomalu: Z písmenek "L", "i", "s", "t" se nedá dedukovat žádným způsobem že se jedná o interface.
mate pravdu neda

a?


atarist

Re:C# .NET vs. Java?
« Odpověď #155 kdy: 24. 02. 2015, 19:02:36 »
List je rovněž interface

Tak znovu a pomalu: Z písmenek "L", "i", "s", "t" se nedá dedukovat žádným způsobem že se jedná o interface.

Neda, proc by melo? (nechceme prece madarstinu ;). Navic budme presni - madarska notace se pouzivala i pro nazvy parametru, globalnich promennych i lokalnich promennych, to bylo maso. Proti tomu to hnusny IMojeRozhrani je jeste nadhera.

Lael Ophir

Re:C# .NET vs. Java?
« Odpověď #156 kdy: 24. 02. 2015, 19:16:56 »
hovorim o outlooku pre iphony. pozrite si, co to ms kupil.
Vím co MS koupil. Kód starého mobilního Outlook nemá s desktopovým Outlookem prakticky nic společného, právě protože desktopový Outlook je velká Win32 aplikace, kterou nemá smysl portovat na telefon. Outlook na Windows Phone je zase výrazně provázaný se systémem, a iOS ani Android nemají potřebnou infrastrukturu. MS tedy místo rozvoje vlastního mobilního Outlooku pro iOS a Android koupil hotový kód, a lidi k tomu.

TVL

Re:C# .NET vs. Java?
« Odpověď #157 kdy: 24. 02. 2015, 19:27:11 »
Tuhle diskuzi, respektive tu její část ohledně nepatrných pozůstatků maďarské notace v .NET by měli ukazovat na školách. Učte se děti, vyučte se programátorem, koukejte, jaké budete mít starosti :-)

perceptron

Re:C# .NET vs. Java?
« Odpověď #158 kdy: 24. 02. 2015, 19:29:40 »
Citace
Outlook na Windows Phone je zase výrazně provázaný se systémem, a iOS ani Android nemají potřebnou infrastrukturu.
prave ste si odpovedali preco sa aplikacie vyvijaju nadvakrat a natrikrat

(teraz vynecham debatu o tom  ze by som rad vedel co je ta potrebna infrastruktura a funkcionalita na androide a iphone nie je)




perceptron

Re:C# .NET vs. Java?
« Odpověď #159 kdy: 24. 02. 2015, 19:30:33 »
Citace
Tuhle diskuzi, respektive tu její část ohledně nepatrných pozůstatků maďarské notace v .NET by měli ukazovat na školách. Učte se děti, vyučte se programátorem, koukejte, jaké budete mít starosti :-)
na tricko si dat:

LPCSTR is a 32-bit pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters.

ava

Re:C# .NET vs. Java?
« Odpověď #160 kdy: 24. 02. 2015, 19:37:12 »
Tuhle diskuzi, respektive tu její část ohledně nepatrných pozůstatků maďarské notace v .NET by měli ukazovat na školách. Učte se děti, vyučte se programátorem, koukejte, jaké budete mít starosti :-)

To jo,

kit napíše "I bez prefixů lze velmi snadné rozpoznat Třídu, instanci, metodu() i interface. Prefixy jsou zbytečné.",

Kolemjdouci na to "Výše uvedené tvrzení není platné pro dvojici "instanci" "interface".",

pak tři stránky komentářů, kde má každý "pravdu",

a nakonec Kolemjdoucí: "Tak znovu a pomalu: Z písmenek "L", "i", "s", "t" se nedá dedukovat žádným způsobem že se jedná o interface."

a na to perceptron: "mate pravdu neda

a?
"

Asi mi to přijde spíš vtipný než smutný .. nebo naopak? ani nevím..

_tomas

Re:C# .NET vs. Java?
« Odpověď #161 kdy: 24. 02. 2015, 19:42:51 »
Cely flame ohladom pomenovania je smiesny. Naming convention je v jednotlivych jazykoch preto, aby sa dalo pohodlne orientovat a rozoznat ci ide o triedu, iface, propertu, field, .... A to aj ked otvorim cudzi kod po par rokoch.

Osobne pisem v c# 5 rokov, a pomenovanie interfacov s "I" mi pride uplne normalne (btw. neviem co madarske vidite na tomto zapise). Verim,ze javistom sa to zda divne, ale nie je to nic ine ako zvyk. Presne ako pomenovanie premennych/fieldov podla typu v c++.

Inak nikto tu zatial nespomenul feature c# z poslednej verzie - async/await. Toto je podla mne jedna z top veci, pre ktore je c# o nieco lepsi. Brutalne to dokaze zprehladnit kod.

perceptron

Re:C# .NET vs. Java?
« Odpověď #162 kdy: 24. 02. 2015, 19:53:53 »
Citace
Asi mi to přijde spíš vtipný než smutný .. nebo naopak? ani nevím..
cele je to o tom, ze je to konvencia ktora ma viac legacy zmysel nez racionalny dovod. ako vravi predrecnik, pride veteran c# do projektu, uvidi ITrollService a citi sa ako v rodinnom krbe

Citace
neviem co madarske
http://en.wikipedia.org/wiki/Hungarian_notation

mk

Re:C# .NET vs. Java?
« Odpověď #163 kdy: 24. 02. 2015, 19:54:20 »
Když porovnám VS2010 (2013 jsem zatím neviděl) s tím, co umí Eclipse nebo Intellij Idea jednoduše na right-click nebo jednoduchou zkratkou přes Alt-Enter, tak je to nesrovnatelné drbání se pravým palcem u nohy na levém oku. Jediný problém s Intellij Idea je to, že plná verze je komerční, nicméně i ta free je na tom líp, než VS Ultimate edition :-)

Vidim, ze se tady nadava na VS v plnem proudu.. Z VS pracuji denne uz par let a nemuzu na neho rict spatne slovo. Mel jsem sanci take pracovat s Intellij, Netbeans, Xamarin Studio, atd.. ale zadny z techto IDE mi nenabidl takovou jednoduchost a radost z prace jako VS hned od zacatku.
Je pravda, ze ty jine IDE jsem nepoznal do hloubky, takze nemuzu rict co vsechno umi. Tady je seznam funkcnosti VS, ktere jsou neocenitelne, porovnejte si to sami s jinymi IDE:
  • Ucet vyvojare v cloudu - uklada se nastaveni, takze po ciste instalaci se staci prihlasit a mame IDE ve stavu v jakem jsme ho posledne pouzivali
  • Podpora velkeho poctu jazyku a technologii i tech, ktere nebyly vytvorene pres Microsoft (C#, C++, VB, Python, JavaScript, TypeScript,... | Angular, Knockout,... ) - napr. v VS 2015 bude podpora frameworku React i s Jsx
  • Paradni debugging - staci najet mysi na nejaky objekt a hned vidime jeho aktualni stav, tak stejne muzeme videt i vnorene objekty.
  • Debugging vlaken - je mozne, nektere vlakno/vlakna zmrazit, prepinat debugger mezi vlakny, poustet jenom, nektere vlakna, podivat se co, ktere vlakno dela. Hodne krat jsem vyuzil moznosti vzdaleneho pripojeni debuggerem k bezici aplikaci a podivani se co dela MainThread (pokud je GUI zaseknute)
  • Edit and continue - naprosto uzasna vec, muzete upravovat kod aplikace za behu. Pokud treba vytvarim novy plugin pro velkou desktopovou aplikaci, musim se proklikat x dialogy, nez muzu vubec otestovat novy kousek kodu. Diky Edit and continue nemusim aplikaci vypinat, staci hodit breakpoint, upravit kod a pustit dal a muzu hned testovat novou funkcnost.
  • Vyborna podpora prace pouze pomoci klavesnice
  • Je mozne si uplne przizpusobit textovy editor, vzhled, klavesove zkratky a dalsi nastaveni IDE
  • Dalsi tooly - architektura aplikace (UML, ERD, atd..), unit testy, profiler (pamet, procesor, soubeznost, atd..)
  • Nasazeni do cloudu (Azure) nove webove aplikace na tri kliknuti, update existujici na jedno kliknuti
  • A plno dalsich veci. A abych nezapomnel, VS je rychle a s SSD diskem je PEKELNE rychle. Tomuto nemuzou vsechny IDE napsane v jave nikdy dorovnat

whata

Re:C# .NET vs. Java?
« Odpověď #164 kdy: 24. 02. 2015, 20:02:25 »
Osobne pisem v c# 5 rokov, a pomenovanie interfacov s "I" mi pride uplne normalne (btw. neviem co madarske vidite na tomto zapise). Verim,ze javistom sa to zda divne, ale nie je to nic ine ako zvyk. Presne ako pomenovanie premennych/fieldov podla typu v c++.

Normální Vám to přijde, protože jste se nezamyslel nad alternativou. Problémem je právě ona netransparentnost. Když nějaká third party udělá z třídy interface (jako se to stalo například u log4j při přechodu z verze 1 na verze 2), tak s Vaším "normálním" přístupem budete přepisovat celou aplikaci, zatímco javista normálně zvednul verzi o jedničku.

Rovněž pojmenování proměnných podle typu v C++ bylo "normální" pouze na windows a díky tomu úpravy na 32-bit windows stály miliardy a to samé znovu při upgrade na 64-bit, stejně tak, když měly být aplikace schopné pracovat s 2GB soubory (tam to MS ještě "vylepšil" se svými Ex funkcemi). Zatímco na jiných systémech stačilo program překompilovat a port na zcela jinou platformu byl hotový. Je naprosto absurdní, že se z toho Microsoft nedokázal ani poněkolikáté poučit a windows api stále všude obsahuje maďarštinu...