论坛首页 Java企业应用论坛

循环的优化

浏览 13494 次
锁定老帖子 主题:循环的优化
精华帖 (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
0 请登录后投票
   发表时间: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.
以上个人见解,呵呵
0 请登录后投票
   发表时间:2009-09-25  
第一条的理解有问题,貌似不是因为比较的原因(想不明白跟0比为什么会快),是cpu少一次计算的问题(汇编忘的差不多了,不过好像是循环用+是3条指令,-是2条指令)
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics