Bir işlevden çıkmadan önce bir kaynak temizleme yapmanız gereken kod olması durumunda, bunu gerçekleştirmenin bu 2 yolu arasında büyük bir performans farkı vardır.
Her iade ifadesinden önce kaynağı temizleme
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
Sonunda bir blokta kaynağı temizleme
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Örnek programlarda bazı temel testler yaptım ve çok fazla bir fark yok gibi görünüyor. Bunu yapmayı çok tercih ediyorum finally
- ama büyük bir projede herhangi bir performansa neden olup olmayacağını merak ediyordum.
if(!cond)
yapmamı sağlayan java. C ++, ben hem booleans hem de diğer türleri için kod yazma böyle - yani int x;
if(!x)
. Java bunu sadece bana izin verdiğinden booleans
, tamamen if(cond)
& if(!cond)
in java kullanmayı bıraktım .
(someIntValue != 0)
Booleanları değerlendirmektense kıyaslamaktan çok görmek isterim . Bu bana kokuyor ve ben vahşi doğada gördüğümde hemen yeniden gözden geçiriyorum.