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 finally
cara 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.