日期:2014-05-17  浏览次数:20673 次

关于"test".equals(param)与param.equals("test")的探讨
今天和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)则什么都不会抛,我们无法知道他到底错在哪里了,我们则需要一步一步的跟着代码下来找问题。如果代码很长那么我们不是要找很久很久了么?
请教下各位是怎么看待这个问题的呢?

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

param.equals("test")这样写的话,如果param为null了,那么他是没有.equals方法的,所有会报空指针

"test".equals(param)    当然不会报错,  因为test和null比较  没有问题的

我知道,我就是要他报异常不然我怎么知道问题出在哪里呢?"test".equals(param)不报错,程序一路直行下去if代码块里面的东西不会执行你也不知道。这是不是重大级BUG呢?


你的意思是如果param等于null的时候要报异常???  那你可以直接param == null 判断去扑捉这个异常,如果你想知道有没有进if里面的代码块,要加日志

这也是个办法,如果参数很多怎么办?


写个公共方法去校验就可以了,这样可以避免代码重复