bor*_*oue 1 java finally try-catch
public boolean sendDeviceEvent() {
boolean status = false;
try {
device.sendEvent("blah...blah");
status = true;
} catch (Exception e) {
log.error("Failed to send NodeLowBattery Event - {} {}", createNodeLowBatteryNotification(), e.getCause());
} finally {
return status;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道上面的代码如何被认为是不好的做法,因为它从最后返回.根据字节码信息,最后不会突然返回,最后没有设置值.怎么会被认为是坏事?
关键是:最后声明根本没有任何意义.它没有为您的代码添加任何价值.这个版本:
try {
...
return true;
} catch (...) {
log ...
}
return false;
Run Code Online (Sandbox Code Playgroud)
是一样的; 没有让你开始思考:最终有什么好处?
换句话说:不要过于依赖功能 ; 并忘记可读性.您希望能够尽快了解正在发生的事情.使用finally肯定会让你的"脑cpu"旋转"更难"...只是因为你必须阅读它,然后消化并解决"啊,实际上我根本不需要它".
当然,这非常微妙; 但最终:一个文件充满了微妙的东西,可能会更清晰......仍然会使文件更难以阅读!
最后:不要误会我的意思:有时候从finally块返回可能有意义.但是 - 只有在该块中发生其他事情时(意味着真正需要最终阻止).
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |