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.