[Javalist] To null or not to null

istvan.ketler at lhsystems.com istvan.ketler at lhsystems.com
2012. Júl. 25., Sze, 09:44:45 CEST


Sziasztok!

Szabin voltam, de talán még nem késő...

Olvastam már én is több helyen, hogy null pedig ne legyen a visszatérő érték, és kicsit sem tudtam elfogadni az érvelést egyszer sem.

NPE-t okozhat? Az csak azt jelenti, hogy rosszul használod. Hiszen a metódusnak van doksija ugye, amiben benne van hogy null is lehet visszatérő érték. Különösen a null visszatérő érték esetén legyen ilyen a doksiban, ha más nem, akkor a „@return beware: might be null!” (haladók tegyék hozzá az okot is, ami a null visszatérő értéket okozhatja)  legyen ott a doksiban... :)

Különösen azon metódusok esetén, amelyek valamiben keresnek valamit, a null nagyon jó és természetes visszatérő érték, jelentése pedig „nincs ilyen”. Ez sokkal kulturáltabb, mint a kivételkezelés.

Olyat is olvastam egyszer valahol, hogy ne térjünk vissza null értékkel, helyette dobjunk runtime exception-t, mert azt nem kell elfogni. Na ez már a teljes hülyeség csimborasszója szerintem... Márpedig az illegal parameter és más hasonlók is a runtime exception népes családjába tartoznak. Ebből az következik, hogy dokumentálni pont ugyanúgy kell, mintha leírnád a fenti hosszú szöveget :), és a figyelmetlen használó pont ugyanolyan érdekes kivételt kapna, mint az NPE, csak másként hívnák.

Persze akkor, ha több ok is bekövetkezhet, ami miatt a metódus nem tud visszaadni „jó” értéket, akkor a null sokszor nem elég informatív. Ilyenkor valóban lehet értelme a kivételnek (akár a runtime kivételnek is). De ha pontosan egy oka lehet a null értéknek, akkor szerintem legális és elfogadott vele visszatérni.

Üdvözlettel,

Iván
István Ketler
Senior Consultant
Lufthansa Systems Hungaria Kft.
Development Center Pest
Neumann János u. 1/e
1117 Budapest
Hungary
Tel: +36 1 887-2815
Fax: +36 1 887-2977
Mobile: +36 30 600-4936
Room: Infopark E, Room LH2-24
e-mail: istvan.ketler at lhsystems.com<mailto:istvan.ketler at lhsystems.com>
Internet: www.LHsystems.hu<http://www.lhsystems.hu/>

From: javalist-bounces at lists.javaforum.hu<mailto:javalist-bounces at lists.javaforum.hu> [mailto:javalist-bounces at lists.javaforum.hu] On Behalf Of gzsombor at gmail.com<mailto:gzsombor at gmail.com>
Sent: Tuesday, July 24, 2012 1:28 PM
To: Java lista
Subject: Re: [Javalist] Segítség! Java7 compiler BUG???

Egy idő után fájna, szerintem. Nem beszélve arról az esetről, hogy mi történjen, ha a key létezik, de a value null :)

On Tue Jul 24 13:20:45 GMT+200 2012, Böszörményi Péter <zmblevlist at gmail.com<mailto:zmblevlist at gmail.com>>. wrote:
Imadnek hasznalni egy Map-et, ami hibat dobna, ha nem letezo kulcsra hivatkoznek.

On Tue, 24 Jul 2012 13:17:42 +0200, Gábor Garami <gabor.garami at hron.me<mailto:gabor.garami at hron.me>> wrote:

> En nem szeretek null-t visszaadni, mert abbol szeret NPE keletkezni -
> es mindig ott, ahol vegkepp nem szamitok ra. Halalosan gyulolom a
> semmihez se kotheto hibakat.
>
> Akkor mar valami ures objektum.
>
> Garami Gábor
> E-mail: gabor.garami at hron.me<mailto:gabor.garami at hron.me>
> Tel: +36 20 235 9621
> MSN: hrgy at vipmail.hu<mailto:hrgy at vipmail.hu>
> Skype: hron84
>
>
> 2012/7/24 Suller Andras <suller.andras at gmail.com<mailto:suller.andras at gmail.com>>:
>> 2012/7/23 Viczián István <viczian.istvan at gmail.com<mailto:viczian.istvan at gmail.com>>:
>>> Üdv,
>>>
>>> Egy okos könyvben olvastam erre egy alternatívát, amelyik
>>> kijelentette, hogy nem jó a return null, mint vezérlő érték, ugyanúgy,
>>> ahogy ne adj vissza státuszkódot sem. Ehelyett egyrészt Exception-t
>>> javasol, amit meg én nem szeretek, mert én az Exception-t mint
>>> kivételes eseményt értelmezek, és az, hogy egy ellenőrzés elbukik, az
>>> nem mindig kivételes esemény.
>>> Ehelyett van egy olyan megoldás, hogy két szép metódust deklarálsz, és
>>> úgy hívod, mert olvashatóbb a hívás helyén.
>>>
>>> if (parameterekHibatlanok()) {
>>> csinaldMeg();
>>> }
>>
>> Ez akkor alternativa a Peter altal felvetett dologra, ha nem kell
>> visszaadni semmit. Kulonben az else agban muszaj valamit return-olni,
>> vagy kivetelt dobni.
>>
>> Egyebkent szerintem az lehet helyes, ha valami metodus null-t ad
>> vissza. Neha en is szoktam alkalmazni.
>>
>> Andras
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu<mailto:Javalist at lists.javaforum.hu>
>> http://lists.javaforum.hu/mailman/listinfo/javalist
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu<mailto:Javalist at lists.javaforum.hu>
> http://lists.javaforum.hu/mailman/listinfo/javalist
>


--
Üdvözlettel,
Böszörményi Péter
_______________________________________________
Javalist mailing list
Javalist at lists.javaforum.hu<mailto:Javalist at lists.javaforum.hu>
http://lists.javaforum.hu/mailman/listinfo/javalist

 
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria Kft, Budapest, Fövarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Monika Houck


--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20120725/cfe572fc/attachment.html>


További információk a(z) Javalist levelezőlistáról