对于在退出函数之前必须进行资源清理的代码,这两种执行方法之间在性能上存在重大差异。
在每个return语句之前清理资源
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)
,那是Java我这样做的。在C ++中,这就是我编写布尔值以及其他类型(即)的代码的方式int x;
if(!x)
。由于java允许我仅将它用于booleans
,所以我完全停止了在Java中使用if(cond)
&if(!cond)
。
(someIntValue != 0)
不是比较而不是评估布尔值。这对我来说很香,当我在野外看到它时,我会立即对其进行重构。