ในกรณีของรหัสที่คุณต้องทำการล้างทรัพยากรก่อนออกจากฟังก์ชันมีความแตกต่างที่สำคัญระหว่าง 2 วิธีในการทำมัน
การทำความสะอาดทรัพยากรก่อนทุกคำสั่งส่งคืน
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
การทำความสะอาดทรัพยากรในบล็อกสุดท้าย
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
ฉันทำการทดสอบขั้นพื้นฐานในโปรแกรมตัวอย่างและดูเหมือนจะไม่แตกต่างกันมากนัก ฉันชอบfinally
วิธีการทำแบบนี้มาก - แต่ฉันสงสัยว่ามันจะทำให้เกิดผลงานใด ๆ ในโครงการขนาดใหญ่หรือไม่
if(!cond)
มันก็คือจาวาที่ทำให้ฉันทำอย่างนี้ ใน C ++, นั่นเป็นวิธีที่ผมเขียนรหัสทั้งสอง booleans และประเภทอื่น ๆ - int x;
if(!x)
คือ เนื่องจาก java อนุญาตให้ฉันใช้สิ่งนี้ได้เฉพาะbooleans
ฉันจึงหยุดใช้if(cond)
& if(!cond)
ใน java โดยสิ้นเชิง
(someIntValue != 0)
มากกว่าการเปรียบเทียบมากกว่าการประเมินบูลีน นั่นทำให้ฉันมีกลิ่นและฉันจะทำให้มันสดชื่นทันทีที่เห็นในป่า