Seriozní porovnání .NETu a Javy

jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #30 kdy: 29. 01. 2018, 07:56:00 »
takze ked budem volat nejaky webservis, ktory mi ako objekt vrati null, alebo budem robit priamo dotaz do DB, ktory vrati null, tak necham vyhodit radsej vynimku, ked pristupim na ten objekt, radsej ako okontrolovat ci nie je null.
Ty si fakt borec. Ale ja som zabudol, ty si ten Kit, co robi sam, vsetko robi OOP, ale este sa nicim neprezentoval.


Kit

Re:Seriozní porovnání .NETu a Javy
« Odpověď #31 kdy: 29. 01. 2018, 08:01:38 »
Proč by měl webservis vracet null? Co je to za nesmysl?

Ivan Nový

Re:Seriozní porovnání .NETu a Javy
« Odpověď #32 kdy: 29. 01. 2018, 08:14:30 »

jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #33 kdy: 29. 01. 2018, 08:15:16 »
a preco by nemohol? WCF moze kludne vratit null objekt. Pokial pouzivas nejaky 3rd party webservis, tak asi s tym nic nenarobis.

Kit

Re:Seriozní porovnání .NETu a Javy
« Odpověď #34 kdy: 29. 01. 2018, 08:17:27 »
V tom případě je takový 3rd party webservis chybný a neměl by se vůbec používat.


jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #35 kdy: 29. 01. 2018, 08:24:48 »
ci je to chybne alebo nie, je nepodstatne. podstatne je, ze nechat vyhucat program hodenim vynimky na null objekte, je zly pristup. Nemozem sa predsa spoliehat, ze dostanem ne-nullovy objekt, pokial to nie je uvedene napr. v dokumentacii.

Kit

Re:Seriozní porovnání .NETu a Javy
« Odpověď #36 kdy: 29. 01. 2018, 08:29:39 »
Jak z toho null chceš rozpoznat příčinu chyby?

Re:Seriozní porovnání .NETu a Javy
« Odpověď #37 kdy: 29. 01. 2018, 08:58:48 »
@Kit - Zeptám se znovu a jinak. Platí tento tvůj přístup i pro C/C++?

Kit

Re:Seriozní porovnání .NETu a Javy
« Odpověď #38 kdy: 29. 01. 2018, 09:32:37 »
@Kit - Zeptám se znovu a jinak. Platí tento tvůj přístup i pro C/C++?

Ne. To jsou jazyky, které jsou zcela odlišné od Javy, C# i PHP.

anonym

Re:Seriozní porovnání .NETu a Javy
« Odpověď #39 kdy: 29. 01. 2018, 09:50:03 »
Kit ma pravdu v tom, že např. je zbytečné psát:

zakaznik?.DodaciUdaje?.Adresa?.PSC();

Je správné, že prostě nechá vyhodit vyjímku. Prostě neexistuje, aby něco z toho bylo null, snad kromě toho PSČ. Jenže problém nastane v situaci, když děláš v žumpě, např. někde v korporátu. Tam se prostě prasí a kdybys kokotům řekl, že tvoje aplikace správně vyhodila NULL exception, protože to, co ti vrátila jejich Service, je nekonzistentní stav, tak ti vyčtou, že máš checkovat na null a psát robustně. Obzvláště, když jsou to pitomci ze zemí 3. světa. Oni prostě udělají debilní Service a ty než bys jim psal chain emailů, že ti kurva mají vracet v XMLku prázdný List a ne null, tak tak raději dáš check na null. A to ti zaprasí kód.

jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #40 kdy: 29. 01. 2018, 10:37:37 »
Citace
protože to, co ti vrátila jejich Service, je nekonzistentní stav, tak ti vyčtou, že máš checkovat na null a psát robustně
iny priklad. nedavno som riesil vyhladavanie certifikatov na windows stroji. C# ponuka funkciu X509Certificate2.Find a ked nenajde dany certifikat, tak vrati null. Urobim kontrolu na null, alebo vyhodim exception? Je to zle spravena funkcia, lebo vrati null? Logicky mi vyznieva, ze ked nic nenajde, vrati spravne null, a vyvojar si okontroluje co mu bolo vratene. Nekontrola na null iba poukazuje na amaterizmus, nehovoriac o tom, ze to nechat zajst az do vynimky.

Kit

Re:Seriozní porovnání .NETu a Javy
« Odpověď #41 kdy: 29. 01. 2018, 10:57:28 »
Citace
protože to, co ti vrátila jejich Service, je nekonzistentní stav, tak ti vyčtou, že máš checkovat na null a psát robustně
iny priklad. nedavno som riesil vyhladavanie certifikatov na windows stroji. C# ponuka funkciu X509Certificate2.Find a ked nenajde dany certifikat, tak vrati null. Urobim kontrolu na null, alebo vyhodim exception? Je to zle spravena funkcia, lebo vrati null? Logicky mi vyznieva, ze ked nic nenajde, vrati spravne null, a vyvojar si okontroluje co mu bolo vratene. Nekontrola na null iba poukazuje na amaterizmus, nehovoriac o tom, ze to nechat zajst az do vynimky.

Je to chybně napsaná funkce, protože se z toho null nedozvíš informaci, proč nebyl certifikát nalezen. Polykání výjimek prostě rád nemám.

jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #42 kdy: 29. 01. 2018, 11:15:37 »
Citace
protože se z toho null nedozvíš informaci, proč nebyl certifikát nalezen.
Dozviem sa to, ze mnou ziadany certifikat neexistuje podla zadanych parametrov.
Citace
Je to chybně napsaná funkce
to urcite. Vies kolko je takych funkcii vo frameworku, ci v .NET alebo v nejakom javovskom?
uz by si sa mohol konecne mohol prezentovat svojou pracou, lebo ty zda sa pises ten najdokonalejsi kod na svete, samozrejme vsetko je OOP. :)

Natix

Re:Seriozní porovnání .NETu a Javy
« Odpověď #43 kdy: 29. 01. 2018, 11:20:19 »
Co se týče práci s nullem, tak pánové z JezBrians to myslím vyřešili poměrně uspokojivě.
https://kotlinlang.org/docs/reference/null-safety.html

Honza

Re:Seriozní porovnání .NETu a Javy
« Odpověď #44 kdy: 29. 01. 2018, 18:59:31 »
Nejsem fanoušek Javy, ale ta má aspoň null jen jeden.
V .Netu nezapomeňte testovat kromě klasického null ještě na DBNull. Ale na to jste jistě zvyklí už z Javascriptu, kde máte null a ještě undefined...
Jestli se null v Kotlinu řeší tak, že se jeho používání nejdříve zakáže, a zavedou se pro práci s ním čtyři další operátory ?, !!, ?., ?:, tak mi to přijde naopak ještě horší...

V Céčku žádné null není, pouze 0, a maximálně NULL jako makro. V C++ také není, od verze C+11 je tam ale typ nullptr_t, který lze použít při přetížení (OOP) metod. Tam bych řekl, že se lze porovnávání vyhnout též.