写代码一定要标准,一个String比较引发的血案
2013-01-05 16:37
253 查看
今天在处理一个bug的时候,发现该bug出现情况十分特殊,只有在weblogic下出现,jboss下并不能出现。
经过多次调试,发现业务逻辑没问题(没怀疑Action的)。每次在jboss下都能正确insert,但到了weblogic就没响应,由于Weblogic是在远程服务器,所以没在weblogic上调试。
实在不行,就在执行SQL语句那里把语句打印出来,结果发现,调用的逻辑居然是其他的方法。
调用的逻辑是这样的
字符串内容的比较不能用==或!=。
看来代码不规范真的会害死人,有时候写代码的时候还是要想下以后维护的。我猜写这个代码的人当时肯定在自己机器上调试通过就满心欢喜就提交了代码了。
经过多次调试,发现业务逻辑没问题(没怀疑Action的)。每次在jboss下都能正确insert,但到了weblogic就没响应,由于Weblogic是在远程服务器,所以没在weblogic上调试。
实在不行,就在执行SQL语句那里把语句打印出来,结果发现,调用的逻辑居然是其他的方法。
调用的逻辑是这样的
if 主键不为空 调用更新逻辑 else 调用插入逻辑问题就出现在主键的判断上。因为主键是字符串,所以代码里判断的是
if (null != pk && "" != pk)这问题就在 ""!= pk上了。这里修改为!"".equals(pk)问题就解决了。其实就是
字符串内容的比较不能用==或!=。
看来代码不规范真的会害死人,有时候写代码的时候还是要想下以后维护的。我猜写这个代码的人当时肯定在自己机器上调试通过就满心欢喜就提交了代码了。
相关文章推荐
- String属于“假引用类型”,代码为证(一个String引发的血案...)
- 一个Sqrt函数引发的血案——神奇的代码
- 一个“Spring轮子”引发的“血案”(6)
- 一个“Spring轮子”引发的“血案”(2)
- 一个空格引发的血案
- String的本质是一个char*,只是以类的形式提供,使用起来比较方便
- 一个BOM头引发的血案!!!
- jQuery.unique引发一个血案
- 一个toLocaleDateString引发的错误
- 一个非常标准的Java连接Oracle数据库的示例代码
- 一个key引发的血案
- 一个馒头引发的血案:C++临时对象
- 一个注解引发的血案
- 一个游标引发的血案,哈哈
- 一个update差点引发的血案
- 一个Sqrt函数引发的血案
- 一个return引发的血案
- js中一个比较另类的string转number的方式..
- 代码干货 | 一个Reentrant Error引发的对Python信号机制的探索和思考