![]() |
|
|
|||||||
| Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 05.11.2008
Fachbeiträge: 245
Abgegebene Danke: 3
Erhielt 16 Danke für 16 Beiträge
|
Hallo zusammen
,wer kennt es nicht? Returnvalue null und Übergabeparameter null. Ich hab jetzt schon öfter darüber Diskutiert und wollte eigentlich mal wissen ob es dazu Regelwerke gibt? Sollte man null als Returnvalue durchgehen lassen? Wenn nicht, was sollt man dann zurück geben, wenn es kein vernünftiges Ergebnis gibt? Und was ist mit null als Übergabeparameter? Erlaubt? Oder doch lieber eine zweite Methode mit einem Parameter weniger? Bin gespannt auf die Antworten ![]() Gruß |
|
|
|
| #2 (permalink) | |
|
Premium-Benutzer
Registriert seit: 29.11.2004
Fachbeiträge: 11.589
Blog-Einträge: 1
Abgegebene Danke: 62
Erhielt 154 Danke für 133 Beiträge
|
Kommt drauf an
.Wenn es Sinn macht, null zurückzugeben, dann darfst du das auch - ein Beispiel dafür ist eine Map, diese gibt null zurück, wenn der Key nicht gefunden wurde, was ich soweit auch sinnig finde. Wenn es allerdings bspw. in der Methode zu einem Fehler kam, und anstatt dass der Fehler weiter nach oben gereicht wird, einfach nur null zurück gegeben wird, finde ich das weniger sinnnig.Genauso sieht es bei null als Übergabeparameter aus. Wenn es Sinn macht, dass man null übergeben darf (simples Beispiel wäre ein Element, das im Konstruktor ein Vorgänger- und Nachfolger-Element erwartet und es einfach (noch) kein Nachfolger-Element gibt) und dieser null -Parameter auch akzeptabel ist, es also später nicht darauf ohne Überprüfung zugegriffen wird, dann kann man das durchaus machen. Wenn es nicht möglich ist, wird ohnehin früher oder später eine NullPointerException geworfen . Ob man dann für jedes Element, das evtl. null sein könnte, eine eigene Methode schreibt, oder in der API-Dokumentation vermerkt, dass dieser und jener Parameter auch null sein darf, kommt auch wieder auf den Fall an. Nehmen wir wieder die Map von oben. Eine Map, die als Value null akzeptiert, sollte (meiner Meinung nach) trotzdem nur eine Methode, nämlich put(Object key, Object value) bereitstellen, und nicht noch zusätzlich die Methode putNullValue(Object key) .Auf der anderen Seite biete ich bei Beans mit vielen Attributen meistens einen Konstruktor ohne Parameter, einen mit den wichtigsten Parametern und einen mit (fast) allen Parametern an. Du siehst, es hängt immer vom Anwendungsfall ab. |
|
|
|
| #4 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 05.11.2008
Fachbeiträge: 245
Abgegebene Danke: 3
Erhielt 16 Danke für 16 Beiträge
|
Danke erstmal!
Klar macht auch Sinn und die Map ist an der Stelle ein ziemlich gutes Beispiel. Allerdings würde doch eine map folgendes z.B. nicht erlauben (habe es nicht getestet ):, weil ein null-Key ja keinen Sinn machen würde. Also kann man doch eigentlich mehr oder weniger festhalten, wenn es sich bei der Übergabe um eine Id oder etwas vergleichbares handelt (ein Key ist auch eine Id wenn man so will), dann sollte da kein null akzeptiert werden. Bei Optionalen Parametern kann man null akzeptieren, sollte es aber in der JavaDoc erwähnen. Bei möglicher Rückgabe von null, in JavaDoc festhalten wann und warum. Das war zumindest das was ich aus deinem Post verstanden hab oder hab ich da was falsch verstanden? |
|
|
|
| #5 (permalink) | |||||||||||||||||||||||||||||||||||||
|
Premium-Benutzer
Registriert seit: 29.11.2004
Fachbeiträge: 11.589
Blog-Einträge: 1
Abgegebene Danke: 62
Erhielt 154 Danke für 133 Beiträge
|
. Kommt eben ganz auf den Kontext an. null kann - situationsabhängig - genauso key sein. Genauso kann ein Nicht-Key oder Nicht-ID so wichtig sein, dass es nicht null sein darf.Das sowieso - oder, wenn man ansonsten zu viele "nullable" Parameter hat, Methoden entsprechend überladen. Geändert von The_S (30.04.2010 um 06:36 Uhr) |
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
| #6 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 05.11.2008
Fachbeiträge: 245
Abgegebene Danke: 3
Erhielt 16 Danke für 16 Beiträge
|
das wäre doch soooo ne schöne Faustregel gewesen :/.Also muss man in jeder Situation durchdenken inwiefern null Sinn macht und danach bestimmen ob nullable oder nicht... |
||||||||||||||||||
|
|
|
||||||||||||||||||
| #7 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 19.01.2007
Fachbeiträge: 2.804
Abgegebene Danke: 12
Erhielt 163 Danke für 156 Beiträge
|
null ist nicht Nichts! null ist zwar eine besondere Referenz, aber es ist eine Referenz und kann somit als solche verwendet werden.
__________________
Grüße, ++++++++++ [ >+++++++>++++++++++>+++>+<<<<- ] >. -----. >++++++++++++++. ++. So funktioniert das mit Foren/Newsgroups/Mailing Lists etc.: smart-questions_de |
|
|
|
| #8 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 17.11.2003
Fachbeiträge: 4.827
Abgegebene Danke: 21
Erhielt 209 Danke für 187 Beiträge
|
Jedes mal nachdenken ist eine gute Idee. Null heißt halt kein Objekt und sollte überall dort erlaubt sein wo kein Objekt ein gültiger Zustand ist. Bei einer Methode
Node.setParent(Node) würde ich erwarten, dass null akzeptiert wird, da kein Elternknoten der normale Zustand des Wurzelknoten eines Baumes ist. Eine Methode readFromStream(InputStream) etwa sollte null verbieten, da man von keinem InputStream nun mal nicht lesen kann.Ebenius
__________________
The first rule of program optimization: don't do it. The second rule of program optimization (for experts only!): don't do it yet. [Michael Anthony Jackson] |
|
|
|
| #9 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 06.04.2005
Fachbeiträge: 5.420
Blog-Einträge: 15
Abgegebene Danke: 192
Erhielt 684 Danke für 561 Beiträge
|
Null ist das schwarze Loch des Typsystems, der Milliarden-Dollar-Fehler, die dunkle Seite der Macht, ein Krebsgeschwür, das Metastasen in deinen Code streut. 'nuf said.
|
|
|
|
| #10 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 05.11.2008
Fachbeiträge: 245
Abgegebene Danke: 3
Erhielt 16 Danke für 16 Beiträge
|
|
||||||||||||||||||
|
|
|
||||||||||||||||||
| #12 (permalink) | |||||||||||||||||||
|
Java-Forum Team
Moderator
Registriert seit: 17.11.2003
Fachbeiträge: 4.827
Abgegebene Danke: 21
Erhielt 209 Danke für 187 Beiträge
|
Ebenius
__________________
The first rule of program optimization: don't do it. The second rule of program optimization (for experts only!): don't do it yet. [Michael Anthony Jackson] |
||||||||||||||||||
|
|
|
||||||||||||||||||
| #13 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 19.01.2007
Fachbeiträge: 2.804
Abgegebene Danke: 12
Erhielt 163 Danke für 156 Beiträge
|
Wer redet denn von unbedingt explizit setzen? Implizit, ohne die Notwendigkeit eine Unterscheidung treffen zu müssen...
__________________
Grüße, ++++++++++ [ >+++++++>++++++++++>+++>+<<<<- ] >. -----. >++++++++++++++. ++. So funktioniert das mit Foren/Newsgroups/Mailing Lists etc.: smart-questions_de |
|
|
|
| #14 (permalink) | |||||||||||||||||||||||||||||||||||||
|
Stammbenutzer
CD-R 80
Registriert seit: 07.10.2003
Fachbeiträge: 9.037
Blog-Einträge: 7
Abgegebene Danke: 92
Erhielt 379 Danke für 294 Beiträge
|
Und ja ich weiß, nicht immer ist ein NullObjekt nutzbar und ja.... alte Diskussion
__________________
When I was young, I invented an invisible friend called Mr Ravioli. My psychiatrist says I don't need him anymore, so he just sits in the corner and reads Geändert von bygones (30.04.2010 um 08:59 Uhr) |
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
| #15 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 17.11.2003
Fachbeiträge: 4.827
Abgegebene Danke: 21
Erhielt 209 Danke für 187 Beiträge
|
Wenn die Diskussion rein theoretischer Natur ist, bzw. eine völlig eigenständige Umgebung hätte, würde ich das in Erwägung ziehen. Da aber keine Sun-Klasse und keine der Bibliotheken die ich nutze diesen Ansatz verfolgt, sondern überall null der richtige Wert für nicht gesetzt ist, mache ich es so. Die Dinge so zu machen wie sie in der Umgebung üblich sind ist oft von Vorteil.
Aber in Stein gemeißelt ist da natürlich nichts. ![]() Ebenius
__________________
The first rule of program optimization: don't do it. The second rule of program optimization (for experts only!): don't do it yet. [Michael Anthony Jackson] Geändert von Ebenius (30.04.2010 um 09:51 Uhr) |
|
|
|
| #16 (permalink) | |||||||||||||||||||
|
Stammbenutzer
CD-R 80
Registriert seit: 07.10.2003
Fachbeiträge: 9.037
Blog-Einträge: 7
Abgegebene Danke: 92
Erhielt 379 Danke für 294 Beiträge
|
*kopfschüttel*
__________________
When I was young, I invented an invisible friend called Mr Ravioli. My psychiatrist says I don't need him anymore, so he just sits in the corner and reads |
||||||||||||||||||
|
|
|
||||||||||||||||||
| #17 (permalink) | |||||||||||||||||||||||||||||||||||||
|
Java-Forum Team
Moderator
Registriert seit: 17.11.2003
Fachbeiträge: 4.827
Abgegebene Danke: 21
Erhielt 209 Danke für 187 Beiträge
|
Die meisten Java-Entwickler würden erstmal erwarten, dass setParent(null) funktioniert. Weil es eben üblich ist.Ich will nicht missionieren, so sehe ich's eben. ![]() Ebenius
__________________
The first rule of program optimization: don't do it. The second rule of program optimization (for experts only!): don't do it yet. [Michael Anthony Jackson] |
||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| need help ; Werte aus einer Datei auslesen | KensAvatar | Allgemeine Java-Themen | 4 | 06.08.2009 16:35 |
| Verschiedene Regex Grupper mit einem Matcher | scheibl | Allgemeine Java-Themen | 1 | 29.05.2009 10:48 |
| Probleme mit Event auf JItem | Matman | AWT, Swing, JavaFX & SWT | 5 | 15.01.2008 11:54 |
| Fehlersuche actionPerformed | DankbarerStudent ;) | Java Basics - Anfänger-Themen | 6 | 05.06.2006 17:42 |
| Button belegen | DankbarerStudent ;) | Java Basics - Anfänger-Themen | 35 | 04.06.2006 23:25 |
| Lesezeichen |
|
|