Betrachten Sie diese zwei Arten der Implementierung:
public int add(int x, int y) {
return mysteriousAdd(x, y);
}
public int add(int x, int y) {
int output = mysteriousAdd(x, y);
return output;
}
Ein Kollege von mir sagt, dass die zweite Implementierung besser ist, da wir beim Debuggen die zurückgegebene Variable sehen mysteriousAdd
und es kein großer Aufwand ist, diese zusätzliche Variable im Stapel zu erstellen. Ich denke, die erste Implementierung ist besser und sein Standpunkt nicht so gültig, da die meisten Compiler heute zeigen können, wie die Funktion während des Debuggens ohne die zusätzliche Variable reagiert, und wir vermeiden auch die Erstellung einer zusätzlichen Variablen im Stapel.
Ist die Erstellung von Referenzvariablen im Stapel eine billige Operation? Welche der beiden oben genannten Methoden ist für die Codierung besser geeignet und warum?
Antworten:
Wenn Sie die Assembly / Bytecode / IL / etc-Ausgabe von zwei solchen Funktionen vergleichen, sollten Sie feststellen, dass beide gleich sind. Alle außer den meisten Compilern in der Buschliga optimieren den Mehrwert.
Daher sollten alle Überlegungen zu Leistung und Speicher verworfen werden.
Treffen Sie also Ihre Wahl hinsichtlich der Lesbarkeit. In diesem Beispiel gibt es wirklich keinen Wert, um den Rückgabewert vor der Rückgabe zu identifizieren. Wenn Sie sich jedoch am Ende einer Berechnung mit 20 Zeilen oder Ähnlichem befinden, kann es sich oft lohnen, den benannten Wert vor der Rückgabe zu erstellen, da dieser Name einem Leser Informationen darüber geben kann, was die Berechnung bewirken soll.
quelle
result
(vielleicht abgekürzt). Dieser Name sagt wirklich alles.Zeigen Sie in Ihrer Programmierumgebung, dass Sie das Ergebnis des Funktionsaufrufs ohne Variable genauso einfach lesen können wie ohne die temporäre Variable. Ich verwende eine meiner Meinung nach recht gute Codierungsumgebung und kann das nicht.
Also zeig es. Wenn Sie können, hat Ihr Kollege etwas gelernt. Wenn Sie nicht können, haben Sie etwas gelernt.
quelle