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