2013-09-23 15 views
7

Ich begann mein Abenteuer mit Sonar;)UnnötigLocalBeforeReturn - warum ist es schlecht?

Sonar mit seiner Standardkonfiguration hat PMD UnncessaryLocalBeforeReturn Fehler auf Major Ebene gesetzt.

List<Todo> filtered = em.createQuery(query).getResultList(); 
    return filtered; 

Es bedeutet für mich, dass ich diesen Code oben in einer Zeile ändern sollte.

Es ist wirklich interessant für mich, weil ich meinen Kollegen empfehlen, dieses "unnötige" Lokal vor der Rückkehr zu machen.

Ich denke, es Debugging zu erleichtern. Wenn ich einen Breakpoint in der Retourlinie einstelle, bin ich mir sicher, dass dieser Wert bereit sein wird, wenn ich dorthin komme, und ich muss keine Auswahl über meine Aussage treffen oder "Über den Ausdruck springen".

Außerdem glaube ich, dass es positive Auswirkungen auf die Verringerung der Rückkehrpunkte in Methoden hat.

Meine Frage ist: Gibt es irgendwelche Erklärungen/Diskussionen, warum Fehler von Projekten wie Checkstyle, PMD, FindBugs, etc. als Fehler anerkannt wurden?

+1

Es ist nicht schlecht, nur unnötig. Diese statischen Analysewerkzeuge markieren nicht einfach Fehler. Stattdessen bieten sie Toolboxen zur Überprüfung aller möglichen Dinge, deren Auswahl von der Art der Software abhängt, die Sie entwickeln. Ihr Projekt erfordert möglicherweise, dass Sie alles in so wenigen Codezeilen wie möglich ausführen, oder Ihr spezieller Compiler optimiert diesen Fall nicht und Sie können den zusätzlichen Taktzyklus nicht verarbeiten ... dann ist diese Überprüfung für Sie. Sonst können Sie es sicher ausschalten. –

+0

Dies ist eine gute verwandte Frage: http://stackoverflow.com/questions/31733811/local-variables-before-return-statements-does-it-matter/31734226#31734226 –

Antwort

0

Wenn Ihr Punkt nur den Inhalt der Liste anzeigt, können Sie den Haltepunkt auch in den Aufrufer der Methode einfügen. Die andere Option besteht darin, einen Haltepunkt zu setzen und den Wert auszuwerten (Eclipse & IntelliJ macht es schön).

Warum ist es als schlechte Praxis gewertet?

Sie fügen einfach eine Referenz zu einer Variablen hinzu, obwohl dies nicht notwendig ist.

Dies erhöht nur die Arbeitslast auf dem Garbage Collector.

Verwandte Themen