2012-04-17 97 views

回答

8

通常

"Delta".equals(type) 

是有利的,因为它是不可能的抛出NullPointerException。也就是说,另一种方式不是“不正确的”,因为它与Java语言规范没有错误;然而,如果(type == null)为真,那么它容易发生故障

术语“最佳实践”用于区分更好的选择与正确但较差的选择。在这种情况下,"Delta".equals(type)是一种最佳做法,以避免处理空指针引用所需的不必要的守护代码。

+0

+1好点... – Rachel 2012-04-17 16:06:45

+0

我不同意这是最佳做法。最佳做法是尽可能让代码尽可能易读,第二个版本比第一个更好地表达意图。它更安全但更“怪异”。 – Puce 2012-04-17 16:18:05

+1

可读性不是视觉呈现的问题,而是该呈现是否表达干净的操作,没有误导的上下文。 'X + 1'和'1 + X'都具有同等可读性,即使大多数人会先选择'X + 1'。在这种情况下,两个表达式都是“Object equals Object”,但表达式的一个排序可以防止程序崩溃。两者都没有通过_clever optimization_隐藏正在发生的事情。最后,请记住__readable代码在操作代码中是次要的,即使是代码质量的专家,他们也不会选择错误。 – 2012-04-17 16:32:19

1

两者都是正确的。第一次调用一个绝对非空字符串比较方法,所以它不会抛出NullPointerException,如果type第二个可能是为空

的sfirst版本是“安全的”,第二个“读”更自然

+0

另一种方式,但我同意type.equals(“Delta”)表达更多的意图(如果Delta等于类型,则要检查类型是否等于Delta。这就是为什么我通常更喜欢第二个版本。 – Puce 2012-04-17 16:12:30

+0

谢谢,让我的订单感到困惑 – Attila 2012-04-17 16:18:52

相关问题