Nel caso di codice in cui è necessario eseguire una pulizia delle risorse prima di uscire da una funzione, esiste una differenza sostanziale nelle prestazioni tra questi 2 modi di farlo.
Pulizia della risorsa prima di ogni dichiarazione di ritorno
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
Pulizia della risorsa in un blocco finally
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Ho fatto alcuni test di base nei programmi di esempio e non sembra esserci molta differenza. Preferisco di gran lunga il finally
modo di farlo, ma mi chiedevo se ciò avrebbe causato un calo delle prestazioni in un grande progetto.
if(!cond)
, allora è Java che mi ha fatto fare questo. In C ++, è così che scrivo codice sia di booleani che anche di altri tipi, ad es int x;
if(!x)
. Poiché java mi permette di usare questo solo per booleans
, ho smesso totalmente di usare if(cond)
& if(!cond)
in java.
(someIntValue != 0)
che confrontare piuttosto che valutare i booleani. Questo mi profuma e lo refactoring immediatamente quando lo vedo in natura.