У разі коду, де вам доведеться зробити очищення ресурсу перед виходом із функції, чи є основна різниця в продуктивності між цими двома способами виконання.
Очищення ресурсу перед кожним твердженням про повернення
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
Очищення ресурсу, нарешті, блок
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Я робив кілька основних тестів у зразкових програмах, і, схоже, немає великої різниці. Я настільки віддаю перевагу finally
способу цього - але мені було цікаво, чи це спричинить якийсь ударний показник у великому проекті.
if(!cond)
, то саме я змусив це зробити. У C ++ саме так я пишу код як для булевих, так і для інших типів - тобто int x;
if(!x)
. Оскільки java дозволяє мені використовувати це лише для booleans
, я повністю припинив використовувати if(cond)
& if(!cond)
in java.
(someIntValue != 0)
ніж порівнював, ніж оцінював булеві. Мені це пахне, і я його рефакторирую одразу, коли бачу його в дикій природі.