2013-09-23 5 views
7

Ho iniziato la mia avventura con Sonar;)UnnecessaryLocalBeforeReturn: perché è male?

Sonar con la configurazione predefinita ha PMD UnnecessaryLocalBeforeReturn impostato su livello principale.

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

Significa che dovrei modificare questo codice sopra in una riga.

E 'davvero interessante per me perché mi raccomando i miei colleghi per rendere questo "inutile" locale prima di ritorno.

Penso che faciliti il ​​debug. Quando imposto il breakpoint sulla linea di ritorno, sono sicuro che quando arriverò questo valore sarà pronto e non devo effettuare la selezione sulla mia affermazione o fare "Step over Expression".

Accanto credo che ha un impatto positivo sulla riduzione punti di ritorno nei metodi.

La mia domanda è: ci sono alcune specie di spiegazioni/discussioni perché gli errori da progetti come Checkstyle, PMD, FindBugs, ecc sono stati riconosciuti come errori?

+1

Non è male, solo inutile. Questi strumenti di analisi statica non contrassegnano semplicemente i bug. Al contrario, forniscono toolbox per controllare tutti i tipi di cose, la cui selezione dipende dal tipo di software che si sta sviluppando. Il tuo progetto potrebbe richiedere che tu faccia tutto nel minor numero possibile di codici, o forse il tuo compilatore speciale non ottimizza questo caso e non puoi sostenere il ciclo di clock extra ... quindi questo controllo è per te. Altrimenti puoi tranquillamente spegnerlo. –

+0

Questa è una buona domanda correlata: http://stackoverflow.com/questions/31733811/local-variables-before-return-statements-does-it-matter/31734226#31734226 –

risposta

0

Se il punto è solo la visualizzazione del contenuto della lista, si può altrettanto bene sia messo il punto di rottura con il chiamante del metodo. L'altra opzione è mettere un punto di interruzione e valutare il valore (Eclipse & IntelliJ lo fa bene).

Perché è considerato come una cattiva pratica?

È sufficiente aggiungere un riferimento a una variabile, mentre non è necessario.

Questo solo aumentare il carico di lavoro del Garbage Collector.