关于"test".equals(param)与param.equals("test")的探讨

z744489075 2014-01-23 04:00:54
今天和PM争论了下这个问题我是这样写的param.equals("test"),PM说不行说要"test".equals(param)这样写,我也在网上搜了下都说要"test".equals(param)

public void test(String param){

//直接进入
if (true) {
//直接进入
if (true) {
//if ("test".equals(param)) {
if (param.equals("test")) {
//如果条件成里则执行方法
service.XX();
}
}
}

}

如果这样写param.equals("test")param传进来的为null的话在第三层if里面就抛空指针异常,然后我们就可以根据异常快速定位问题的发生点。如果"test".equals(param)则什么都不会抛,我们无法知道他到底错在哪里了,我们则需要一步一步的跟着代码下来找问题。如果代码很长那么我们不是要找很久很久了么?
请教下各位是怎么看待这个问题的呢?
...全文
220 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
咖啡加糖_ 2014-01-23
  • 打赏
  • 举报
回复
引用 4 楼 z744489075 的回复:
[quote=引用 3 楼 jimmy609 的回复:] [quote=引用 2 楼 z744489075 的回复:] [quote=引用 1 楼 jimmy609 的回复:] param.equals("test")这样写的话,如果param为null了,那么他是没有.equals方法的,所有会报空指针, "test".equals(param) 当然不会报错, 因为test和null比较 没有问题的
我知道,我就是要他报异常不然我怎么知道问题出在哪里呢?"test".equals(param)不报错,程序一路直行下去if代码块里面的东西不会执行你也不知道。这是不是重大级BUG呢?[/quote] 你的意思是如果param等于null的时候要报异常??? 那你可以直接param == null 判断去扑捉这个异常,如果你想知道有没有进if里面的代码块,要加日志[/quote] 这也是个办法,如果参数很多怎么办?[/quote] 写个公共方法去校验就可以了,这样可以避免代码重复
z744489075 2014-01-23
  • 打赏
  • 举报
回复
引用 3 楼 jimmy609 的回复:
[quote=引用 2 楼 z744489075 的回复:] [quote=引用 1 楼 jimmy609 的回复:] param.equals("test")这样写的话,如果param为null了,那么他是没有.equals方法的,所有会报空指针, "test".equals(param) 当然不会报错, 因为test和null比较 没有问题的
我知道,我就是要他报异常不然我怎么知道问题出在哪里呢?"test".equals(param)不报错,程序一路直行下去if代码块里面的东西不会执行你也不知道。这是不是重大级BUG呢?[/quote] 你的意思是如果param等于null的时候要报异常??? 那你可以直接param == null 判断去扑捉这个异常,如果你想知道有没有进if里面的代码块,要加日志[/quote] 这也是个办法,如果参数很多怎么办?
咖啡加糖_ 2014-01-23
  • 打赏
  • 举报
回复
引用 2 楼 z744489075 的回复:
[quote=引用 1 楼 jimmy609 的回复:] param.equals("test")这样写的话,如果param为null了,那么他是没有.equals方法的,所有会报空指针, "test".equals(param) 当然不会报错, 因为test和null比较 没有问题的
我知道,我就是要他报异常不然我怎么知道问题出在哪里呢?"test".equals(param)不报错,程序一路直行下去if代码块里面的东西不会执行你也不知道。这是不是重大级BUG呢?[/quote] 你的意思是如果param等于null的时候要报异常??? 那你可以直接param == null 判断去扑捉这个异常,如果你想知道有没有进if里面的代码块,要加日志
z744489075 2014-01-23
  • 打赏
  • 举报
回复
引用 1 楼 jimmy609 的回复:
param.equals("test")这样写的话,如果param为null了,那么他是没有.equals方法的,所有会报空指针, "test".equals(param) 当然不会报错, 因为test和null比较 没有问题的
我知道,我就是要他报异常不然我怎么知道问题出在哪里呢?"test".equals(param)不报错,程序一路直行下去if代码块里面的东西不会执行你也不知道。这是不是重大级BUG呢?
咖啡加糖_ 2014-01-23
  • 打赏
  • 举报
回复
param.equals("test")这样写的话,如果param为null了,那么他是没有.equals方法的,所有会报空指针, "test".equals(param) 当然不会报错, 因为test和null比较 没有问题的

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧