3 回答
TA贡献1784条经验 获得超8个赞
我会去
"Something".equals(MyInput);
在这种情况下,如果MyInput是null,则不会抛出NullPointerException
在这里,我们确定equals()要调用的对象是NOT NULL。
并且,如果您希望NullPointerException代码做出一些决定或抛出/包装它,那么请首先进行。
对性能没有影响
TA贡献1794条经验 获得超8个赞
成为逆势.... :)
如果MyInput为null,则第一行可能会崩溃,但这只是为了方便代码的程序员(通常带有C宿醉)在不想断言“ MyInput”可以为null时使用。
如果使用第二个选项,则此行可能不会导致NullPointerException,但以下几行可能会导致。
我相信最好了解变量的可能状态,而不是依赖于一些可以简化您的良心的代码构造。
TA贡献1842条经验 获得超12个赞
那么我们如何将整个代码上下颠倒地进行更改呢?
那些首先喜欢常数的人,看到它们时会感觉如何?
if ( 2 == i)
在我看来,隐藏NullPointerException永远不是好处,而是设计中的一个缺点。
如果您从不期望NullPointerException却遇到了NullPointerException,那么您需要让应用程序崩溃,跟踪日志并查看发生这种情况的原因。您可能完全错过了一个商业案例:)
如果您可以选择使用null参数,并且对单独处理它不感兴趣,则可以使用StringUtils.equals(...)之类的实用程序方法
就是说,我绝不允许任何团队成员使用第二种形式,因为第二种形式不一致且不可读。
添加回答
举报