boolean return typ verwenden?

Bit2_Gosu

Bekanntes Mitglied
Hi!

Ich frage mich, wann es sinnvoll ist, über den return typ boolean Aussagen über Operationen zu liefern. Sagen wir, wir haben ein Schachbrett und es gibt eine Funktion, die sagt, ob ein Feld mit einer Figur besetzt ist und eine Funktion "setPiece()", die auf ein Feld eine Figur setzt. Jetzt könnte ich der setPiece-Funktion den return typ boolean geben und sie true zurückgeben lassen, wenn auf dem Feld vorher schon eine Figur stand, die jetzt durch die Funktion geschlagen wurde. Ich könnte aber auch sagen: "Wozu? Der Benutzer kann vorher die andere Funktion benutzen, um zu schauen ob da eine Figur steht, und dann die setPiece() Funktion aufrufen." Meiner Meinung nach ist folgendes auch NICHT sehr leserlich:
Java:
if (setPiece(feldID, figur)) {
    System.out.println("Eine Figur wurde geschlagen!");
}
Hier muss der Benutzer auch erst die Doku der setPiece() Funktion anschauen, um zu wissen, für was der Rückgabetyp steht.
Das hier finde ich besser:
Java:
if (feld.containsPiece()) {
    System.out.println("Eine Figur wurde geschlagen!");
}
setPiece(feldID, figur);
Andererseits ist ersteres kürzer... Wie steht ihr dazu? Bzw. was ist üblich und gilt als besserer Stil?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
tja, was ist schon üblich,

nützlich ist es vielleicht, wenn man die Methode häufig verwendet,
für Set und Map in den util-Collections geben die Methoden add/put einen boolean zurück, ob der das Element/ der Key schon bekannt war,
ansonsten würden nämlich unzählige Aufrufe
if (map.contains(..)) { .. } else { add(..) }
lauten

je spezielle und seltener eine Methode ist, desto weniger lohnt sind eine solche Abkürzung
 

Marco13

Top Contributor
Wenn das mit dem Schach nicht nur ein Beispiel sein sollte: Such' mal nach "schlagen en passant" :D

Ansonsten kommt's IMHO schon auf die genaue Semantik an. Schau' vielleicht mal im java.util.List interface. Dort gibt "add" z.B. ein boolean zurück, "set" gibt das Element zurück, das vorher dort war - aber "contains" gibt's auch...
 

Bleistift

Mitglied
Das Beispiel mit dem Schachbrett ist vielleicht etwas unpraktisch. Es kann ja auch eine Figur der gleichen Farbe auf dem Feld stehen und der Zug dadurch unmöglich sein. Grundsätzlich wäre ich eher für die kürzere Variante.
mfg Bleistift
 

Marco13

Top Contributor
"Grundsätzlich" ist so eine Sache. Man sollte überlegen, ob nicht mal irgendwann jemand sowas machen will wie
Code:
if (containsPiece(x)) // NUR wenn da was ist...
{
    setPiece(x,p); //... setz' ich da hin und schlage
}

Wenn es NUR "setPiece" gibt, ist das nicht möglich....
 

Bleistift

Mitglied
Stimmt ;-) Am besten man schreibt setPiece mit boolean-Rückgabe als eine Zusammenfassung der trotzdem noch vorhandenen Methoden containsPiece und setPiece, damit man beide Versionen benutzen kann.
mfg Bleistift
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D public boolean return Allgemeine Java-Themen 8
L Fehler mit Boolean. (Glaube ich zumindest) Allgemeine Java-Themen 6
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
C Boolean Array Allgemeine Java-Themen 4
J Boolean EventListener Allgemeine Java-Themen 2
E Boolean aus Klasse A als String in Klasse B ausgeben Allgemeine Java-Themen 4
A Boolean Array in Allgemeine Java-Themen 3
A boolean und prozesse Allgemeine Java-Themen 2
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
Z Boolean Abfrage gibt kein Boolean zurück, aber warum? Allgemeine Java-Themen 6
Kr0e Synchronisieren: boolean,byte,char ? Allgemeine Java-Themen 2
D falsche Annahme nach korrekter Auswertung (if, boolean) Allgemeine Java-Themen 2
S Boolean Ausgabe JasperReports Allgemeine Java-Themen 2
I Probleme mit Boolean-Methode Allgemeine Java-Themen 4
D Boolean Listener? Allgemeine Java-Themen 28
R boolean im Bean abfragen Allgemeine Java-Themen 18
E boolean Array in ein byteArray mit derLänge 5 Allgemeine Java-Themen 6
S Problem mit Boolean Variablen Allgemeine Java-Themen 8
B boolean array = byte array (platzverbrauch) Allgemeine Java-Themen 6
J Vector - Boolean Allgemeine Java-Themen 24
H boolean wert ändern Allgemeine Java-Themen 2
L boolean aus der main übergeben? Allgemeine Java-Themen 12
C public boolean containsAll(Collection c) Allgemeine Java-Themen 2
rosima26 Unterschiedliche Werte bei return/print Allgemeine Java-Themen 12
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
I Java Optionals mit return-Block Allgemeine Java-Themen 2
R missing return statement Allgemeine Java-Themen 13
V int Array einer return Methode übergeben? Allgemeine Java-Themen 4
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
B XAResource[] return statement Allgemeine Java-Themen 3
V Wildcard aus Parameter in return type Allgemeine Java-Themen 2
P Return oder Global Allgemeine Java-Themen 3
W Rekursion-Probleme mit return Allgemeine Java-Themen 35
Dragonfire Code Konvention for-Schleife / return Allgemeine Java-Themen 15
R return in try-catch-Blöcken Allgemeine Java-Themen 6
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
H return bei Methode Allgemeine Java-Themen 2
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
hdi dynamische return-Werte Allgemeine Java-Themen 15
M Problem mit return-werten Allgemeine Java-Themen 35
B Warum return type Object ? Allgemeine Java-Themen 4
M return-Statement Allgemeine Java-Themen 5
S Wie Carriage Return Line Feed abfragen. Allgemeine Java-Themen 6
M java-doc: @return mehrzeilig gestalten Allgemeine Java-Themen 3
L return-Funktion Allgemeine Java-Themen 5
L return Funktion Allgemeine Java-Themen 6
G return bei generiertem code Allgemeine Java-Themen 6
S Fehler beim return eines String Arrays Allgemeine Java-Themen 3
Fredy Return by value mit String?? Allgemeine Java-Themen 6
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
J Welchen Packager soll ich verwenden. Allgemeine Java-Themen 7
H lokale Variable bei Optional verwenden Allgemeine Java-Themen 11
M Exceptions - wann / wie verwenden? Allgemeine Java-Themen 4
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
bueseb84 Git : Mehrere Server verwenden Allgemeine Java-Themen 3
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
D Klassen JLabels in anderen Klassen verwenden. Allgemeine Java-Themen 7
D API Keys mehrmals verwenden Allgemeine Java-Themen 6
K For-Schleife <> oder != Operator verwenden? Allgemeine Java-Themen 2
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
J PDFBox kommerziell verwenden Allgemeine Java-Themen 15
S Variablen split-Funkton mit zwei Variabeln verwenden? Allgemeine Java-Themen 4
K jar-Datei lässt sich unter Windows nicht verwenden Allgemeine Java-Themen 3
M Java Mail verwenden Allgemeine Java-Themen 20
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
J Interface Wofür Interfaces in Java verwenden? Allgemeine Java-Themen 3
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
O 3D-Grafik java3D in eclipse verwenden Allgemeine Java-Themen 0
J Allgemein gültige Klasse/Methode mehrfach verwenden Allgemeine Java-Themen 11
R Threads ReentrantLock mehrfach verwenden Allgemeine Java-Themen 3
J Interface Interface für Framework verwenden Allgemeine Java-Themen 4
G Services verwenden sich gegenseitig Allgemeine Java-Themen 4
R Dateimanager verwenden Allgemeine Java-Themen 2
P Variablen Variable von void im ActionListener verwenden Allgemeine Java-Themen 3
N VB Code in Java verwenden Allgemeine Java-Themen 5
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
A Klassen String Array in anderer Klasse verwenden Allgemeine Java-Themen 11
P JDK installieren Mac OS X - JDK7 in Eclipse Juno verwenden Allgemeine Java-Themen 3
L Eine jar verwenden, die intern auf eine andere jar zugreift Allgemeine Java-Themen 7
S Aus Programm Klasse erstellen und verwenden Allgemeine Java-Themen 10
R Collections CopyOnWriteArrayList - wie genau verwenden Allgemeine Java-Themen 7
M Lock Datei intelligent verwenden Allgemeine Java-Themen 4
J Eure Meinung: Threads verwenden, oder nicht? Allgemeine Java-Themen 6
X Threads Thread mehrmals verwenden Allgemeine Java-Themen 4
G JGoodies Binding oder EventBus verwenden? Allgemeine Java-Themen 11
E Kann nicht gesamten HeapSpace verwenden Allgemeine Java-Themen 5
A Eigenen OutputStream schreiben und verwenden Allgemeine Java-Themen 9
M Poi-Excel: vorhandene Formatierung verwenden Allgemeine Java-Themen 2
R ResourceBundle in Servlets verwenden Allgemeine Java-Themen 13
A Welche Exception verwenden? Allgemeine Java-Themen 2
R Java function die Strings escaped, sodass ich sie in Javascript verwenden kann? Allgemeine Java-Themen 4
MQue Vector<..> nicht verwenden Allgemeine Java-Themen 4
T Pfad aus Dateilesen -> wie diesen Pfad verwenden! Allgemeine Java-Themen 13
R in einem neuen Runnable() eine lokale Varibale verwenden Allgemeine Java-Themen 2
G dll verwenden Allgemeine Java-Themen 2
A Bestimmte JVM verwenden Allgemeine Java-Themen 13
R array.length in For-Schleife verwenden? Allgemeine Java-Themen 22
F Generics: spricht etwas dagegen raw types zu verwenden? Allgemeine Java-Themen 31

Ähnliche Java Themen

Neue Themen


Oben