有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

编码风格什么是正确的方式来使用。Java中的equals方法?

我正在和我的CompSci教授交谈,他建议将所有String.equals方法编写为:

"Hello World".equals(fooString);

而不是:

fooString.equals("Hello World");

这两行代码都可以编译,但我想知道第一种方法的好处是什么?我总是用后一种方式。这是错的吗?什么是普通/传统


共 (2) 个答案

  1. # 1 楼答案

    第一种方法确保在执行比较时不会收到NullPointerException。当您试图对不存在的对象调用方法时,会引发(发生)此异常

    下面有点相关:风险自担阅读

    不过,值得注意的是,我很少在合法的生产环境中使用这种技术或编码风格。这有两个原因

    首先,在变量包含null的情况下,您编写的程序几乎总是想做一些特殊或不同的事情。这是因为它通常表示代码函数的其他部分出错,或者需要解决的特殊情况。因此,在对对象进行任何比较或方法调用(在本例中是^{)之前,都应该进行空检查

    第二,fooString.equals("Hello World")只会让代码更具可读性。代码中第一项技术的逻辑意义需要几秒钟才能正确处理,当您浏览数百或数千行代码时,很容易出现判断错误。事实上,这并不像听起来那么琐碎,因为在工作世界中,往往会有一些非常大、非常古老的程序,在看一眼就解决问题之前,这些程序会被一无所知的人修补。代码可读性极大地提高了公司执行快速分类和解决长期问题的能力

  2. # 2 楼答案

    第一种方法保证NullPointerException不会被抛出,而第二种方法可能会冒着NullPointerException的风险,如果fooString恰好是null

    然而,归根结底,这一切都归结为需求。如果需求指定null情况根本不应该发生,或者应该以不同的方式处理,那么以第二种方式(fooString.equals())写入可以帮助您检测实现缺陷。如果你可以把null当作另一个病例来处理,那么第1种方法就可以了