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ę finallysposó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.