bin gerade über ein Thema gestolpert…
Ich habe ein Interface/Klasse mit einer Methode die als Rückgabe einen Bool’schen Wert zurück gibt…jetzt die Frage:
Boolean wasAuchImmerDieMacht(xyz...);
oder besser: boolean wasAuchImmerDieMacht(xyz...);
Boolean (also groß) ist eine Wrapperklasse für den nativen Datentyp boolean.
Wenn jemand ein Boolean benötigt dann soll er sich den Rückgabewert selber wrappen, warum zusätzlich Arbeit ausführen lassen wenn sie wahrscheinlich garnicht benötigt wird?
Autoboxing-/unboxing dürfte bei Boolean nicht so tragisch sein, wie bei anderen Wrapper-Typen. Dennoch würde ich die primitive Variante vorziehen. Einzig im Umfeld von bspw. JPA würde ich es mit Wrappern machen, weil die im Gegensatz zu primitives nullable sind. Also Wrapper nur, wenn evtl null möglich sein soll.
Auch im Zusammenhang mit funktionaler Programmierung finde ich die Primitiv-Variante besser. Dann entspricht die Signatur Deiner Methode einem Predicate (Stichwort Methodenreferenz). Das trifft den “Zweck” der Methode meist eher als eine Function.
Die Wrapper haben auch den Nachteil, dass plötzlich null möglich ist, manchmal ist das ein Vorteil, aber wenn die Wahrheit entweder true oder false sein muss…
Wenn du kein null willst/brauchst, würde ich boolean vorschlagen.
Wie schon geschrieben wurde ist die Frage, was die Antwort enthalten soll (und nicht die Parameter)
Gibt es nur die Antwortmöglichkeiten (Rückgabe true/false) würde ich wie auch von den anderen geschrieben den boolean vorziehen, da dieser nur genau diese Antworten hat. Wenn jedoch auch null zurück gegeben werden kann (was ein bisschen komisch ist) dann muss es Boolean sein. Wenn das null jedoch nur benutzt wird um ein Fehlverhalten zu Symbolisieren, würde ich eher eine Exceptione (Aunsnahme/Fehlerfall) werfen und der Aufrufer der Funktion muss sich dann darum kümmern wie er damit umgeht. Eine weitere Möglichkeit um mehr als 2 Zustände zu haben wäre noch die Verwendung eines Enums. So z.B.
möchte ich mit einer Funktion abfragen wie der download zustand ist, gibt es den Zustand fertig geladen, läd noch und es ist ein Fehler aufgetreten, das könnte ich nun als Boolean isLoading () machen [true=läd, false=fertig geladen,null=fehler], oder mit dem Enum State getLoadingState() was für den Anwender der Funktion einfacher zu verstehen ist.
Nein, ich wurde „namentlich nachgemacht“ und bin deshalb angepisst. Aber egal, name dropping. Hinter Gamma verbirgt sich eine ganz andere Person, welche; das wissen wir nicht.
[QUOTE=Jango]Na dann - nichts für ungut.
Nachgemacht? Man kann dich nicht nachmachen. Du bist du (einzigartig), wie konnte ich das verwechseln. :P[/QUOTE]
Das ist doch Ironie. Jetzt bin ich auf dem neusten Stand.
Zwischen dem Rückgabetyp Boolean und (formalen) Parametertyp Boolean gibt’s - außer den “Erstellungszeitpunkt” -, keinen Unterschied. Es gibt 3 Zustände, wahr, falsch und “Fehler”; braucht man nur 2, dann sollte man boolean wählen. Boolean und boolean sind ja auch gut miteinander “verträglich”.
Null repräsentiert auch keinen Fehler. Wenn kama so eine einfache Frage hat, warum sollte er das dann wissen? Bitte verteile doch nicht falsches Wissen.