锁定老帖子 主题:实践中的重构06_方法调用顺序和性能
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-16
已经想过头了,利用短路方式已经够了。
|
|
返回顶楼 | |
发表时间:2010-11-16
seele 写道 gdpglc 写道 zhang_xzhi_xjtu 写道 这个也考虑过,只是为了方便调试,一般把方法的返回值都独立出来。 方便在哪? 以后还要加判断什么地,多加几个你就知道这么写会改起来容易 多加几个判断的确不能写在一起,但是有些代码几乎不可能加判断。这个就得根据业务逻辑来了。不过既然现在只有两个判断,我倾向于不要考虑那么多。 |
|
返回顶楼 | |
发表时间:2010-11-16
最后修改:2010-11-16
seele 写道 gdpglc 写道 zhang_xzhi_xjtu 写道 这个也考虑过,只是为了方便调试,一般把方法的返回值都独立出来。 方便在哪? 以后还要加判断什么地,多加几个你就知道这么写会改起来容易 这也不能叫方便调试呀? 是不是可以叫,可以应对未来变化的代码? 我认为最好别预测未来。未来的变化实在太多了。就算预测成功,省的就是多打几个字母... |
|
返回顶楼 | |
发表时间:2010-11-16
其实觉得代码还是以易读为主,向这样的代码宁肯多写两行,短路的写法是最高效的,但是如果出了问题需要进行单步调试的话还是像楼主那样写起来比较方便。
但是这样写也有个坏处,就是第一个条件被做为了第二个判断的启动条件,不太利于以后的理解,建议还是短路,不过开始的时候增加一个中间变量。 boolean isLoginAgainInMonth=isLoginAgainInMonth(userId); return isLoginAgainInMonth||isGardUser(userId); 这样单步调试的时候比较容易控制 |
|
返回顶楼 | |
发表时间:2010-11-16
明天的昨天 写道 这个也考虑过,只是为了方便调试,一般把方法的返回值都独立出来。 我也想知道到底方便在哪里? 楼主的上一个帖子,不是也直接这样了吗? 实践中的重构05_简洁的代码 if (a|| b|| c) { return true; } return false; 可以改为 return a|| b|| c; 一个是调用方法,一个是变量,不一样。 |
|
返回顶楼 | |
发表时间:2010-11-16
dwbin 写道 其实觉得代码还是以易读为主,向这样的代码宁肯多写两行,短路的写法是最高效的,但是如果出了问题需要进行单步调试的话还是像楼主那样写起来比较方便。
但是这样写也有个坏处,就是第一个条件被做为了第二个判断的启动条件,不太利于以后的理解,建议还是短路,不过开始的时候增加一个中间变量。 boolean isLoginAgainInMonth=isLoginAgainInMonth(userId); return isLoginAgainInMonth||isGardUser(userId); 这样单步调试的时候比较容易控制 这里的纠结在于大家都明白短路,可以不能指望所有人都明白。 当后来的人维护的时候,很有可能加一个条件,取一个值,放到短路条件的第一个。 如果加的条件是开销很大的调用的话,就悲剧了。 分开写,是为了提醒维护的人,这里的调用顺序是重要的。 看到a||b||c,一般人的反应是,三个条件有一个为true,则返回,而不会想调用顺序的问题。 |
|
返回顶楼 | |
发表时间:2010-11-16
zhang_xzhi_xjtu 写道 dwbin 写道 其实觉得代码还是以易读为主,向这样的代码宁肯多写两行,短路的写法是最高效的,但是如果出了问题需要进行单步调试的话还是像楼主那样写起来比较方便。
但是这样写也有个坏处,就是第一个条件被做为了第二个判断的启动条件,不太利于以后的理解,建议还是短路,不过开始的时候增加一个中间变量。 boolean isLoginAgainInMonth=isLoginAgainInMonth(userId); return isLoginAgainInMonth||isGardUser(userId); 这样单步调试的时候比较容易控制 这里的纠结在于大家都明白短路,可以不能指望所有人都明白。 当后来的人维护的时候,很有可能加一个条件,取一个值,放到短路条件的第一个。 如果加的条件是开销很大的调用的话,就悲剧了。 分开写,是为了提醒维护的人,这里的调用顺序是重要的。 看到a||b||c,一般人的反应是,三个条件有一个为true,则返回,而不会想调用顺序的问题。 如果这个真的很重要,为什么不写点注释... |
|
返回顶楼 | |
发表时间:2010-11-16
gdpglc 写道 zhang_xzhi_xjtu 写道 dwbin 写道 其实觉得代码还是以易读为主,向这样的代码宁肯多写两行,短路的写法是最高效的,但是如果出了问题需要进行单步调试的话还是像楼主那样写起来比较方便。
但是这样写也有个坏处,就是第一个条件被做为了第二个判断的启动条件,不太利于以后的理解,建议还是短路,不过开始的时候增加一个中间变量。 boolean isLoginAgainInMonth=isLoginAgainInMonth(userId); return isLoginAgainInMonth||isGardUser(userId); 这样单步调试的时候比较容易控制 这里的纠结在于大家都明白短路,可以不能指望所有人都明白。 当后来的人维护的时候,很有可能加一个条件,取一个值,放到短路条件的第一个。 如果加的条件是开销很大的调用的话,就悲剧了。 分开写,是为了提醒维护的人,这里的调用顺序是重要的。 看到a||b||c,一般人的反应是,三个条件有一个为true,则返回,而不会想调用顺序的问题。 如果这个真的很重要,为什么不写点注释... 我认为LZ应该是想让程式码自我注释,如果程式码可以自我注释我认为比明确写上注释要好 |
|
返回顶楼 | |
发表时间:2010-11-16
chiaun 写道 我认为LZ应该是想让程式码自我注释,如果程式码可以自我注释我认为比明确写上注释要好 不必如果,楼主的代码很明确,你认为达没达到你说的 自我注释的要求? |
|
返回顶楼 | |
发表时间:2010-11-16
首先,所有的书告诉你的应该是:不要过早优化。
其次,你那个只是设计失误而已,算不上性能优化。 |
|
返回顶楼 | |