Trong trường hợp mã mà bạn phải thực hiện dọn dẹp tài nguyên trước khi thoát khỏi hàm, có sự khác biệt lớn về hiệu năng giữa 2 cách thực hiện này không.
Làm sạch tài nguyên trước mỗi tuyên bố hoàn trả
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
Làm sạch tài nguyên trong một khối cuối cùng
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Tôi đã thực hiện một số thử nghiệm cơ bản trong các chương trình mẫu và dường như không có nhiều sự khác biệt. Tôi rất thích finally
cách làm này - nhưng tôi đã tự hỏi liệu nó sẽ gây ra bất kỳ hiệu suất nào trong một dự án lớn.
if(!cond)
, thì đó là java khiến tôi làm điều này. Trong C ++, đó là cách tôi viết mã cả booleans và cho các loại khác - tức là int x;
if(!x)
. Vì java cho phép tôi chỉ sử dụng cái này cho booleans
, tôi đã hoàn toàn ngừng sử dụng if(cond)
& if(!cond)
trong java.
(someIntValue != 0)
hơn là so sánh hơn là đánh giá booleans. Điều đó có mùi với tôi, và tôi tái cấu trúc nó ngay lập tức khi tôi nhìn thấy nó trong tự nhiên.