编码风格什么是正确的方式来使用。Java中的equals方法?
我正在和我的CompSci教授交谈,他建议将所有String.equals
方法编写为:
"Hello World".equals(fooString);
而不是:
fooString.equals("Hello World");
这两行代码都可以编译,但我想知道第一种方法的好处是什么?我总是用后一种方式。这是错的吗?什么是普通/传统
你可以在下面搜索框中键入要查询的问题!
我正在和我的CompSci教授交谈,他建议将所有String.equals
方法编写为:
"Hello World".equals(fooString);
而不是:
fooString.equals("Hello World");
这两行代码都可以编译,但我想知道第一种方法的好处是什么?我总是用后一种方式。这是错的吗?什么是普通/传统
# 1 楼答案
第一种方法确保在执行比较时不会收到NullPointerException。当您试图对不存在的对象调用方法时,会引发(发生)此异常
下面有点相关:风险自担阅读
不过,值得注意的是,我很少在合法的生产环境中使用这种技术或编码风格。这有两个原因
首先,在变量包含null的情况下,您编写的程序几乎总是想做一些特殊或不同的事情。这是因为它通常表示代码函数的其他部分出错,或者需要解决的特殊情况。因此,在对对象进行任何比较或方法调用(在本例中是^{)之前,都应该进行空检查
第二,
fooString.equals("Hello World")
只会让代码更具可读性。代码中第一项技术的逻辑意义需要几秒钟才能正确处理,当您浏览数百或数千行代码时,很容易出现判断错误。事实上,这并不像听起来那么琐碎,因为在工作世界中,往往会有一些非常大、非常古老的程序,在看一眼就解决问题之前,这些程序会被一无所知的人修补。代码可读性极大地提高了公司执行快速分类和解决长期问题的能力# 2 楼答案
第一种方法保证
NullPointerException
不会被抛出,而第二种方法可能会冒着NullPointerException
的风险,如果fooString
恰好是null
然而,归根结底,这一切都归结为需求。如果需求指定
null
情况根本不应该发生,或者应该以不同的方式处理,那么以第二种方式(fooString.equals()
)写入可以帮助您检测实现缺陷。如果你可以把null
当作另一个病例来处理,那么第1种方法就可以了