Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Eine kurze Frage zum Verständnis. Hier zwei Schreibweisen einer Methode mit Rückgabewert:
Java:
public class Test{
int zahl1 = 5;
int zahl2 = 10;
int ergebnis;
/**
* @return ergebnis (int) : Ergebnis der Rechnung
*/
public int gibErgebnis() {
ergebnis = zahl1 + zahl2;
return ergebnis;
}
/**
* @return ...?
*/
public int gibErgebnis2() {
return zahl1 + zahl2;
}
Code:
gibErgebnis()
und
Code:
gibErgebnis2()
funktionieren genau gleich.
Welche Schreibweise ist "schöner" im Sinne von gutem Programmier-Stil?
Und wie würde man bei
Code:
gibErgebnis2()
den return-Wert kommentieren, denn einen Variablen-Namen gibt es ja nicht?!
ich würde die 2. Variante bevorzugen, da ergebnis in dem Beispiel keine weitere Verwendung hat, und daher muss es auch nicht als Klassenvariable gehalten werden.
zur Kommentierung: return-werte werden in der Regel nur beschrieben, und nicht betitelt
"Ergebnis der Berechnung" wäre in beiden Fällen ausreichend, bzw "Ergebnis der Addition von zahl1 und zahl2" wenn du auf die Klassenvariablen verweisen möchtest.
Ich denke das kommt immer auf die Anwendung drauf an. Die erste Variante würde ich nehmen wenn du den return wert direkt in eine Funktion einbaust wie z.B. JLabel ergebnis = new JLabel(gibErgebnis());
Und die zweite Variante wenn du sowieso vor hast das in eine Variable zu speichern.
Ich denke das kommt immer auf die Anwendung drauf an. Die erste Variante würde ich nehmen wenn du den return wert direkt in eine Funktion einbaust wie z.B. JLabel ergebnis = new JLabel(gibErgebnis());
Ja sorry meinte ich genau anders herum ist aber nur mein Empfinden. Wenn es da tatsächlich eine Regelung für gibt wäre ich sehr gespannt wenn ein Profi uns mal erklärt was besser ist
Genau so wie du das geschrieben hast, ist Variante 2 sauberer, aus dem Grund, dass bei Variante eins die Variable ergebnis und das Ergebnis der Funktion unnötigerweise noch in der Klasse gespeichert wird, wenn die Funktion schon beendet ist.
Java:
public class Test{
int zahl1 = 5;
int zahl2 = 10;
/**
* @return ergebnis (int) : Ergebnis der Rechnung
*/
public int gibErgebnis() {
int ergebnis = zahl1 + zahl2;
return ergebnis;
}
/**
* @return ...?
*/
public int gibErgebnis2() {
return zahl1 + zahl2;
}
eigentlich sind es zwei verschiedene Funktionen. Das eine ist eine Zuweisung zu einem Feld in der Klasse, das andere die Berechnung/der Algorithmus. Abhängig von der Anforderung würde ich es so schreiben:
Java:
/**
* @return ergebnis (int) : Ergebnis der Rechnung
*/
public int gibErgebnis() {
ergebnis = calcErgebnis();
return ergebnis;
}
/**
* @return ...?
*/
public int calcErgebnis() {
return zahl1 + zahl2;
}
dann würde man auch die verschiedenen Funktionalitäten besser hervorheben und über die Ableitung kann man calcErgebnis(), den Algorithmus, verändern. Die Funktion gibErgebnis() kann als Cache-Funktion angesehen werden. Wenn calcErgebnis() einen hohen Aufwand hat, dann kann man es so schreiben:
Java:
/**
* @return ergebnis (int) : Ergebnis der Rechnung
*/
public int gibErgebnis() {
if(ergebnis == 0)
ergebnis = calcErgebnis();
return ergebnis;
}
wobei es natürlich wichtig zu definieren wäre, welcher Wert bei "ergebnis" undefiniert bedeutet.