锁定老帖子 主题:循环的优化
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-24
sunflowers 写道 jieping310 写道 var.equals("123");这个有什么问题? var是个变量,变量就有可能为null,而"123"是个常量,永远都不可能给为null 所以字符串比较时,标准的写法应该是"123".equals(var); var.equals("123")才是标准的写法,"123".equals(var)会吃掉空指针的异常情况 对于任何一个稳健的系统而言,更期待的是抛出异常而不是吃掉异常 "123".equals(var)受早期精简代码的影响,现在想来不可取 个人理解:优秀的代码往往是冗余的 ps: var.equals("123")这种写法完全可以由jvm优化,好像新的jdk已经包含相关的feature |
|
返回顶楼 | |
发表时间:2009-09-23
最后修改:2009-09-23
oxromantic 写道 sunflowers 写道 jieping310 写道 var.equals("123");这个有什么问题? var是个变量,变量就有可能为null,而"123"是个常量,永远都不可能给为null 所以字符串比较时,标准的写法应该是"123".equals(var); var.equals("123")才是标准的写法,"123".equals(var)会吃掉空指针的异常情况 对于任何一个稳健的系统而言,更期待的是抛出异常而不是吃掉异常 "123".equals(var)受早期精简代码的影响,现在想来不可取 个人理解:优秀的代码往往是冗余的 ps: var.equals("123")这种写法完全可以由jvm优化,好像新的jdk已经包含相关的feature 其实这个var.equals("123")的问题要看上下文 如果人家在var.equals("123")之前已经 if(var == null) return;了呢? 还有就是我们是中国人主语靠前的程序容易阅读。我们写程序不是给机器看的,是给人看的。看过《实现模式》的朋友应该知道程序代码交流的重要性. PS:在Groovy中可以这样避免这个问题 var?.equal("123"),带上这个问号,编译器会处理null value invoke. 以上个人见解,呵呵 |
|
返回顶楼 | |
发表时间:2009-09-25
第一条的理解有问题,貌似不是因为比较的原因(想不明白跟0比为什么会快),是cpu少一次计算的问题(汇编忘的差不多了,不过好像是循环用+是3条指令,-是2条指令)
|
|
返回顶楼 | |