En el caso de un código en el que debe realizar una limpieza de recursos antes de salir de una función, ¿existe una diferencia de rendimiento importante entre estas 2 formas de hacerlo?
Limpieza del recurso antes de cada declaración de devolución
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
Limpiar el recurso en un bloque finalmente
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Hice algunas pruebas básicas en programas de muestra y no parece haber mucha diferencia. Prefiero mucho la finally
forma de hacer esto, pero me preguntaba si causará algún impacto en el rendimiento en un gran proyecto.
if(!cond)
, entonces es java lo que me hizo hacer esto. En C ++, así es como escribo código de booleanos y también para otros tipos, es decir int x;
if(!x)
. Como java me permite usar esto solo para booleans
, he dejado de usar if(cond)
& if(!cond)
en java.
(someIntValue != 0)
que comparar en lugar de evaluar booleanos. Eso me huele, y lo refactorizo inmediatamente cuando lo veo en la naturaleza.