2008-04-09
又一个Java窍门
关键字: trick, tip作者的想法很简单,目的就是在return之前,以日志的形式将返回的信息打印出来。实现这个功能并不难,不过处理得非常巧妙得当(见修改后的代码)。
boolean method() {
if (conditionA)
return resultA;
if (conditionB)
return resultB;
if (conditionC)
return resultC;
}
改写后的代码如下:
boolean method() {
boolean result = false;
try {
if (conditionA)
return (result = resultA);
if (conditionB)
return (result = resultB);
if (conditionC)
return (result = resultC);
}
finally {
log(result)
}
}
原文链接:
- 09:37
- 浏览 (514)
- 评论 (3)
- 分类: Java Basic
- 相关推荐
评论
Godlikeme
2008-04-14
public static X log(X arg) {
logItSomehow(arg);
return arg;
}
boolean method() {
if (conditionA) return log(resultA);
if (conditionB) return log(resultB);
if (conditionC) return log(resultC);
}
In the following comments, This one should be a better trick.
Godlikeme
2008-04-14
另外如果 ConditionA类似的地方有可能跑出异常,log的结果也是错误的,因为方法并没有正常的返回,而log确记录下result的值为false。实际在调用方法拿到的结果是由方法的具体代码决定的
例如调用方法这样些
实际method并没有返回给调用它的方法false的结果,而log却记录下来为false.
我是感觉没有必要强制在method里log result,因为它并不一定是真正的返回值。
而是在调用它的地方来输出。或者在method的里面直接赋值给result,log后return result.
有点钻牛角尖了。呵呵
例如调用方法这样些
boolean result =true;
try{
result =method();
}catch(Exception e){
//handle exception
}
System.out.println(result);
实际method并没有返回给调用它的方法false的结果,而log却记录下来为false.
我是感觉没有必要强制在method里log result,因为它并不一定是真正的返回值。
而是在调用它的地方来输出。或者在method的里面直接赋值给result,log后return result.
有点钻牛角尖了。呵呵
Godlikeme
2008-04-14
这段代码在Eclipse里面是编辑器会报错的。
发表评论
- 浏览: 86109 次
- 性别:

- 来自: 重庆

- 详细资料
搜索本博客
最新评论
-
jquery图书列表
那本jQuery Reference Guide就算了……还不如不看呢……
-- by shawphy -
你会用Protocol Buffers吗 ...
为什么只做配置文件用?我想google来使用Protocol Buffers,主 ...
-- by menlong999 -
你会用Protocol Buffers吗 ...
为什么只做配置文件用?我想google来使用Protocol Buffers,主 ...
-- by menlong999 -
你会用Protocol Buffers吗 ...
引用XML是对机器友好的,着你都读得懂,还怕读不懂Protocol Buffer ...
-- by Sam1860 -
你会用Protocol Buffers吗 ...
Protocol Buffers好像是一个二进制协议。自Web Services ...
-- by hax






评论排行榜