W przypadku kodu, w którym należy wykonać czyszczenie zasobu przed wyjściem z funkcji, istnieje znaczna różnica w wydajności między tymi 2 sposobami wykonania tego.
Czyszczenie zasobu przed każdym zwrotem
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
Czyszczenie zasobu w końcu bloku
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Zrobiłem kilka podstawowych testów w przykładowych programach i wydaje się, że nie ma dużej różnicy. Tak bardzo wolę finally
sposób na zrobienie tego - ale zastanawiałem się, czy to wpłynie na wydajność w dużym projekcie.
if(!cond)
, to java mnie do tego zmusiła. W C ++ w ten sposób piszę kod zarówno logiczne, jak i dla innych typów - tj int x;
if(!x)
. Ponieważ java pozwala mi używać tego tylko do booleans
, całkowicie przestałem używać if(cond)
& if(!cond)
in java.
(someIntValue != 0)
niż porównywać niż oceniać booleany. To mi pachnie i przerabiam to natychmiast, gdy widzę to na wolności.