专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > J2SE

为什么代码中尽量少出现"123"equals(str)这样的危险字符?解决方法

发布时间:2010-06-05 05:30:43 文章来源:www.iduyao.cn 采编人员:星星草
为什么代码中尽量少出现"123".equals(str)这样的危险字符???
.代码中尽量少出现"123".equals(str)这样的危险字符,而要public static final StringSTR = "123"; STR.equals(str)去代替.
求解释

------解决方案--------------------
如果你写的只是个小程序,这样当然没什么影响。
如果系统代码几K,几十K,甚至成千上百K,那么这样写肯定是危险的俄
------解决方案--------------------
比如 你有恨多地方都需要喝123比较 
如果用static final你只需要修改1个地方
如果很多地方都用"123".equels("XX")就需要分别修改。这样做的结果就是很容易漏改,或改错
------解决方案--------------------
统一在一个地方对定义,供多处使用,如果你确认你会永久一看到这代码就可以明白"123".equals(str)中的数字什么是什么意思,同时你也能确保"123"以后永久不会改变,这样就无危险可严。。。.说其危险只是夸张了下,是要引起程序员的注意
------解决方案--------------------
这种称为“魔法常量”,也就是说莫名其妙地一个字面常量,让人不知道这是干嘛的,为什么要用这个。
------解决方案--------------------
这种代码里直接出现的数字或字符串,叫“魔鬼数字”或“魔鬼变量”
给你具个例子,通讯项目代码里经常要用"WCDMA",代码里可能成百上千处需要,
如果都直接写"WCDMA",
1)某处不小心写错了,编译器不会提醒你的;而定义了一个常量,各处使用,肯定不会错
2)某天为了规范,要改为"UMTS",要不一个个改,要不全部替换,都是又费神又有危险的操作;而定义了一个常量,只需修改这一处即可。

PS:ls sunyiz兄说的很好,字符串与常量比较时,str.equals("123")前面一定要先判断str是否为null:(null != str)&&(str.equals("123"),而为null的判断经常会忘掉的;"123".equals(str)
就没问题了,即使str为null也正常判断为false。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: