Rückgabe oder Parameter?

Status
Nicht offen für weitere Antworten.
M

Marsman

Gast
Hallo Ihr!

Leider fällt mir oft die Entscheidung schwer, ob ich ein Objekt durch eine Methode zurückgeben oder es als Parameter übergeben und von der Methode ändern lassen soll. Zum Beispiel bei einem Datensatz, der durch eine SQL-Anweisung ermittelt wird.

Beispiel 1:

Code:
Datensatz ds = getDatensatz();

Datensatz getDatensatz() {
    Datensatz ds = new Datensatz();
    // Code zum holen der Daten
    ds.setField1 = resultSet.getInt(1);
    return ds;
}

Beispiel 2:

Code:
Datensatz ds = new Datensatz();

void getDatensatz(Datensatz ds) {
    // Code zum holen der Daten
    ds.setField1 = resultSet.getInt(1);
}

Mir ist nicht ganz klar, wo die Vor- und Nachteile liegen. Oder ist es einfach nur Geschmackssache?

Danke schonmal,

Titus
 

dotlens

Top Contributor
mit der 2ten Variante kannst du diesen Datensatz setzen, den du möchtest, beim ersten ist er fix. ausserdem verfehlt das erste beispieil irgendwie denn sinn der sache.
kannst du ja gerade so gut in deinem code schreiben, da diese methode kein bischen wiederverwendbar ist...
 
M

Marsman

Gast
dotlens hat gesagt.:
mit der 2ten Variante kannst du diesen Datensatz setzen, den du möchtest, beim ersten ist er fix. ausserdem verfehlt das erste beispieil irgendwie denn sinn der sache.
kannst du ja gerade so gut in deinem code schreiben, da diese methode kein bischen wiederverwendbar ist...

Ich verstehe deine Formulierung nicht ganz...

Warum verfehlt das erste Beispiel den Sinn? Es gibt den Datensatz als Objekt zurück. Es gibt doch viele Methoden, die Objekte zurückgeben, statt sie zu ändern.

Und was meinst du mit wiederverwendbar? Vererbbar? Warum sollte sie das nicht sein?

Gruß, Titus
 

Sky

Top Contributor
Ich glaube bei deinen Beispielen kommt es einfach darauf an, was Ziel der Methode sein soll:

In der 1.) Variante ist das Ziel eher "ermittele mir die Daten und gib sie mir"; in der 2.) Variante geht es darum "Hier ist ein Datensatz und mach was damit".

Ansonsten gibt es natürlich noch andere Möglichkeiten; ein Beispiel:

Code:
public void doSomething() {
  Datensatz ds = new Datensatz();
  if ( getDatensatz(ds) ) {
    // Mache irgendwas mit 'ds'
  }
}

...
 
public boolean getDatensatz( Datensatz ds ) {
  // 1. ) Versuch den Datensatz zu ermitteln
  // 2.) boolean zurückgeben: true, wenn erfolgreich geladen / false im Fehlerfall
}
 
G

Guest

Gast
sky80 hat gesagt.:
Ansonsten gibt es natürlich noch andere Möglichkeiten; ein Beispiel:

(...)

Deine Variante gefällt mir inzwischen auch am besten. Denn unabhängig von den Daten selbst kann die Methode den Aufrufer noch über den Erfolg der Verarbeitung informieren. Wenngleich sie das auch über eine Exception könnte.

Ich habe nur einfach immer noch ein komisches Gefühl beim Ändern von Eingabeparametern in einer Methode. Bisher habe ich Funktionen (um es mal allgemein zu benennen) immer nach dem Prinzip 0-n Eingabeparameter und maximal einen Ausgabeparameter programmiert. Dieser musste dann eine Struktur sein, wenn eine Gruppe von Werten zurückgegeben werden soll.

Titus
 

Sky

Top Contributor
Anonymous hat gesagt.:
Denn unabhängig von den Daten selbst kann die Methode den Aufrufer noch über den Erfolg der Verarbeitung informieren. Wenngleich sie das auch über eine Exception könnte.

Na Klar könnte Sie das. Aber: Exceptions sind -wie der Name schon sagt- Ausnahmen und deshalb sollte man m.E. sparsam damit umgehen. Denn: Exceptions sind langsamer als o.g. Konstrukt. Wenn also davon auszugehen ist, dass nur wenige Ausführungen schief gehen, so sind Exceptions der richtige Ansatz. Ist die Wahrscheinlichkeit hoch, dass z.B. das Laden der Datensätze mal nicht geht, so sollte man dann dies lieber über einen Statuswert zurückgeben (i.d.R. boolean; aber ein eigenes Error-Objekt oder auch ein int kann manchmal hilfreich sein)


Anonymous hat gesagt.:
Bisher habe ich Funktionen (um es mal allgemein zu benennen) immer nach dem Prinzip 0-n Eingabeparameter und maximal einen Ausgabeparameter programmiert. Dieser musste dann eine Struktur sein, wenn eine Gruppe von Werten zurückgegeben werden soll.

Das mit der Rückgabe von Strukturen ist auch kein Problem:
Code:
class Struktur {
  private boolean m_bStatus;
  private int m_iErrorCode;
  private String m_sErrorText;
  ...
  // getter  und setter dazu.
}

...

public Struktur doSomething() {
Struktur oStruktur = new Struktur();
// Mache irgendwas
oStruktur.setStatus( false );
oStruktur.setErrorCode( 99 );
oStruktur.setErrorText( "Leider ist das Laden nicht möglich" );
return oStruktur;
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Parameter rückgabe nach Prüfung an Klasse/Methode Java Basics - Anfänger-Themen 2
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
G Endlosschleife keine Rückgabe Java Basics - Anfänger-Themen 36
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
Z Rückgabe eines Values in umgekehrte richtung Java Basics - Anfänger-Themen 5
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
R Methode Rückgabe Java Basics - Anfänger-Themen 10
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
J Rückgabe-Problem Java Basics - Anfänger-Themen 10
B Rückgabe von zwei Werten: String und double Java Basics - Anfänger-Themen 14
N Best Practice Rückgabe eines Terminal Befehls in eine Variable speichern Java Basics - Anfänger-Themen 27
J Funktionen auf der Rückgabe eines Stacks (pop) Java Basics - Anfänger-Themen 6
karlmasutra Klassen Rückgabe eines Wertes aus einer anderen Klasse Java Basics - Anfänger-Themen 3
V Methoden Rekursive Methode mit String als Rückgabe Java Basics - Anfänger-Themen 7
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
S Rekursion Rückgabe - Türme von Hanoi Java Basics - Anfänger-Themen 16
F Konsolen Befehl ausführen und Rückgabe auswerten Java Basics - Anfänger-Themen 3
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
L Probleme bei Rückgabe eines Arrays in einer Methode Java Basics - Anfänger-Themen 47
L Frage zur Rückgabe von Werten bei Methoden Java Basics - Anfänger-Themen 4
P Rückgabe erflogt nicht als Double Java Basics - Anfänger-Themen 2
D Methoden ArrayList Rückgabe bringt komische Werte Java Basics - Anfänger-Themen 12
M Übergabe / Rückgabe Java Basics - Anfänger-Themen 6
A Rückgabe in for-Schleife Java Basics - Anfänger-Themen 2
I Rückgabe und Aufruf einer Methode innerhalb einer anderen Methode Java Basics - Anfänger-Themen 5
S Rückgabe-Array lässt sich nicht auslesen, LocalDate mit String Java Basics - Anfänger-Themen 3
G Methoden mehrdimonsionale Arrays als Rückgabe Java Basics - Anfänger-Themen 2
S Methode rückgabe wiederverwenden Java Basics - Anfänger-Themen 4
J Rückgabe als Wert, keine Referenz Java Basics - Anfänger-Themen 3
llabusch Methoden Rückgabe einer Methode verwerden Java Basics - Anfänger-Themen 1
S Methoden void-Methode: Wieso gibt es eine Rückgabe? Java Basics - Anfänger-Themen 5
R public static void Rückgabe Java Basics - Anfänger-Themen 5
H Array wird verändert ohne Rückgabe? Java Basics - Anfänger-Themen 7
S Rückgabe von einem Array Java Basics - Anfänger-Themen 7
S Problem mit Rückgabe Wert von Methoden Java Basics - Anfänger-Themen 5
M Serialize - Fehler bei Rückgabe von Objekt Java Basics - Anfänger-Themen 5
R CMD Rückgabe durchlesen Java Basics - Anfänger-Themen 14
W Rückgabe Methode mit Feld Java Basics - Anfänger-Themen 4
A Rekursion in Baum und ArrayList als Rückgabe Java Basics - Anfänger-Themen 2
N Rückgabe der Werte funktioniert nicht Java Basics - Anfänger-Themen 9
F Problem bei Rückgabe von StringBuffer aus Methode Java Basics - Anfänger-Themen 6
N HashMap fehlerhafte Rückgabe Java Basics - Anfänger-Themen 7
K Problem mit der Rückgabe Java Basics - Anfänger-Themen 3
R Rückgabe Array Java Basics - Anfänger-Themen 22
G Klasse überschreiben wenn Rückgabe über Methode Java Basics - Anfänger-Themen 6
M Methode mit Rückgabe Java Basics - Anfänger-Themen 2
D Maximum Subarray Problem; Problem mit der Rückgabe Java Basics - Anfänger-Themen 10
N Methoden und deren Rückgabe Java Basics - Anfänger-Themen 4
D Rückgabe einer Klasse Java Basics - Anfänger-Themen 20
H TreeMap Rückgabe - Compiler-Warnings Java Basics - Anfänger-Themen 9
M Rückgabe bei Exception Java Basics - Anfänger-Themen 4
H Rekursion und Rückgabe Java Basics - Anfänger-Themen 11
K Rückgabe aus Formular Java Basics - Anfänger-Themen 3
S HashMap: Rückgabe des key zu bestimmten value Java Basics - Anfänger-Themen 3
B "vollständige" Resultat Rückgabe Java Basics - Anfänger-Themen 8
G Problem mit der Rückgabe von einem Array Java Basics - Anfänger-Themen 3
A Beschreibung von Code und Rückgabe von Anzahl in ArrayList Java Basics - Anfänger-Themen 5
R Rückgabe vom ActionListener Java Basics - Anfänger-Themen 12
B JavaFilter true rückgabe Java Basics - Anfänger-Themen 23
S Rückgabe eines eingelesenen 2D Arrays aus Klasse heraus Java Basics - Anfänger-Themen 3
J datentyp -objectTyp Rückgabe Java Basics - Anfänger-Themen 2
zilti PHP-Script aufrufen und Rückgabe lesen Java Basics - Anfänger-Themen 2
G Array Rückgabe aus Programm Java Basics - Anfänger-Themen 6
0 Probleme bei Threads mit Rückgabe. Java Basics - Anfänger-Themen 6
C Rückgabe bei methoden Java Basics - Anfänger-Themen 2
S Probleme mit InputStream- Rückgabe Java Basics - Anfänger-Themen 4
G Warum ist die Rückgabe kein Integer? Java Basics - Anfänger-Themen 5
G Rückgabe Java Basics - Anfänger-Themen 6
G Rückgabe mehrdimensionales Array Java Basics - Anfänger-Themen 3
G Rückgabe einer Kopie bzw. Referenz Java Basics - Anfänger-Themen 22
G Rückgabe einer Methoden bei Schließen des Fensters Java Basics - Anfänger-Themen 3
M Rückgabe funktioniert nicht! Java Basics - Anfänger-Themen 4
F Rückgabe eines Array´s aus einer Methode Java Basics - Anfänger-Themen 3
H Konstruktor mit Rückgabe Java Basics - Anfänger-Themen 13
L Rückgabe Java Basics - Anfänger-Themen 4
D Rückgabe von Arrays Java Basics - Anfänger-Themen 6
C Interface Parameter und Rückgabewerte in Lambda Ausdrücken verwenden Java Basics - Anfänger-Themen 16
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
BeginnerJava "Weihnachtsbäume" anzeigen: Höhe als Parameter Java Basics - Anfänger-Themen 1
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
X Default Parameter Java Basics - Anfänger-Themen 20
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
D Best Practice Parameter int vs byte Java Basics - Anfänger-Themen 16
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
L Wie greife ich in der Subklasse auf die Parameter einer Methode der Superklasse zu ? Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben