Dalam hal kode di mana Anda harus melakukan pembersihan sumber daya sebelum keluar dari suatu fungsi, apakah ada perbedaan kinerja utama antara 2 cara melakukannya.
Membersihkan sumber daya sebelum setiap pernyataan pengembalian
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }Membersihkan sumber daya di blok akhirnya
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Saya melakukan beberapa tes dasar dalam program sampel dan sepertinya tidak ada banyak perbedaan. Saya jauh lebih suka finallycara melakukan ini - tapi saya bertanya-tanya apakah itu akan menyebabkan kinerja apa pun dalam proyek besar.
if(!cond), maka itu java yang membuat saya melakukan ini. Dalam C ++, begitulah cara saya menulis kode boolean dan juga untuk jenis lainnya - yaitu int x; if(!x). Karena java memungkinkan saya untuk menggunakan ini hanya untuk booleans, saya benar-benar berhenti menggunakan if(cond)& if(!cond)di java.
(someIntValue != 0)daripada membandingkan daripada mengevaluasi boolean. Itu bau bagi saya, dan saya segera refactor ketika saya melihatnya di alam liar.