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 finallyforma 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.