Lokale Variablen vor Rückgabeanweisungen, ist es wichtig?

8

Tut mir leid, wenn das eine neue Frage ist, aber ich konnte dafür keine Antwort finden. Ist es besser, dies zu tun?

%Vor%

oder:

%Vor%

Ich weiß, dass ganze Zahlen Speicher verwenden, also nehme ich an, dass es die Leistung leicht verringert? Aber auf der anderen Seite macht es Sachen klarer, besonders wenn die int / string eine lange Berechnung ist.

Danke für jede Eingabe!

    
SJ19 30.07.2015, 20:51
quelle

3 Antworten

13

Es gibt tatsächlich eine SonarQube-Regel, die von PMD geerbt wurde: Unnötige lokale vor der Rückkehr das darüber spricht. Es sagt:

  

Vermeiden Sie unnötige lokale Variablen.

Diese Regel wurde später durch die SSLR-Regel ersetzt Variablen sollten nicht deklariert und dann sofort zurückgegeben oder geworfen werden , die die gleiche Position beibehalten:

  

Eine Variable nur zu deklarieren, um sie sofort zurückzugeben oder zu werfen, ist schlecht   üben . Einige Entwickler argumentieren, dass die Praxis den Code verbessert   Lesbarkeit, weil es ihnen ermöglicht, explizit zu benennen, was ist   ist zurückgekommen. Diese Variable ist jedoch ein internes Implementierungsdetail   das ist den Anrufern der Methode nicht ausgesetzt. Der Methodenname   sollte für Anrufer ausreichend sein, um genau zu wissen, was sein wird   zurückgegeben .

Und ich stimme dem vollkommen zu.

IntelliJ (oder zumindest Android Studio) enthält ebenfalls eine Warnung für diese Situation:

  

Variable, die nur bei der folgenden Rückgabe verwendet wird und inline sein kann

     

Diese Inspektion meldet lokale Variablen, die entweder nur bei der nächsten Rückgabe oder bei exakten Kopien anderer Variablen verwendet werden. In beiden Fällen ist es besser, eine solche Variable zu verknüpfen.

Ich glaube nicht, dass Leistung in dieser Situation etwas ist, worüber man sich Sorgen machen muss. Davon abgesehen, wie @Clashsoft in seinem Kommentar erwähnt hat, wird das JIT höchstwahrscheinlich die Variable inline einbinden, und Sie werden am Ende mit dem gleichen Ergebnis enden.

    
Thiago Porciúncula 30.07.2015 21:18
quelle
4

Compiler sind normalerweise schlau genug, um diese Art von Dingen zu optimieren. Siehe Datenflussoptimierungen auf Wikipedia.

In diesem Fall muss wahrscheinlich eine temporäre Variable zugewiesen werden, um das Ergebnis zu speichern, auch wenn Sie selbst keine angeben.

Edit: Clashsoft hat Recht mit dem Bytecode-Compiler:

%Vor%     
Vlad 30.07.2015 21:18
quelle
4

Wählen Sie die Version, die Sie für besser lesbar hält.

Es gibt berechtigte Fälle, in denen die benannte Variable die Lesbarkeit verbessert. Zum Beispiel

%Vor%

Es gibt auch Fälle, in denen wir eine Variable in einem anderen Typ als den Rückgabetyp benötigen. Dies wirkt sich auf die Typumwandlung und die Inferenz aus und macht einen signifikanten semantischen Unterschied.

%Vor%     
ZhongYu 30.07.2015 23:13
quelle

Tags und Links