Methode - Rückgabewert Schreibweise

The_Virus

Mitglied
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.
 
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;
    }
Wenn du das ganze so machst sind beide ok imho.
 
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.

Slawa
 

Neue Themen


Zurück
Oben