No caso de código em que você precisa fazer uma limpeza de recursos antes de sair de uma função, há uma grande diferença de desempenho entre essas duas maneiras de fazê-lo.
Limpando o Recurso Antes de Cada Declaração de Retorno
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
Limpando o Recurso em um Bloco Finalmente
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Fiz alguns testes básicos em programas de amostra e não parece haver muita diferença. Eu prefiro muito a finally
maneira de fazer isso - mas estava pensando se isso causaria algum impacto no desempenho de um grande projeto.
if(!cond)
, é o Java que me fez fazer isso. Em C ++, é assim que escrevo códigos tanto para booleanos quanto para outros tipos - ie int x;
if(!x)
. Como o java me permite usar isso apenas para booleans
, parei totalmente de usar o if(cond)
& if(!cond)
in java.
(someIntValue != 0)
que comparar e não avaliar booleanos. Isso cheira a mim, e refatoro-o imediatamente quando o vejo na natureza.