2011-02-23 104 views
4

有在某些类中的方法从方法返回与返回指令

public void addAdditionalData(List<PairOfKeyString> data, List<Text> comments)

从数据列表信息是用于此方法必需 - 这意味着如果数据为空或在执行该方法空没有逻辑。 我有两个选择怎么做

首先

if (data != null && !data.isEmpty()) { do somelogic here }

if(data == null || data.isEmpty()) { 
    return; 
} 

你会选择哪一种?为什么? 谢谢!

+4

绝对对于http一个问题://codereview.stackexchange。 com/ – Riduidel 2011-02-23 09:43:33

回答

6

第二个选项肯定是更好的,因为它不会增加代码嵌套,更容易阅读和理解。您还可以在而不是执行操作时添加更多规则,这不会影响实施的重要部分。

+0

我同意代码嵌套,更容易阅读点,但不会返回代码看起来像goto样式? – artjomka 2011-02-23 09:51:27

3

我更喜欢第二个选项:

if(data == null || data.isEmpty()) { 
    return; 
} 

正如你可以后添加你的逻辑,而不必封装在if语句使你的代码的可读性所有的代码,读者会看到它作为一个分开的部分代码。

这将使您在未来能够中心分离和扩展必要的所有条件,这将导致您离开例程而不是嵌套if嵌套。考虑到费率代码是写入:阅读约1:10

1

我通常更喜欢& &运算符,如果布尔代数不会比||更复杂。表达。
原因:

  1. 只有一种情况下(出四)检查精神上if语句进入。
  2. 我尝试避免方法中的返回/中断表达式,以使代码流更清晰。
1

简单的方法:

如果( Collections.emptyList()等于(数据)。) {}

+0

正如我从集合源代码看到,如果数据== null,那么结果将是错误的,但如果数据是空的,那么结果是真实的,这不是我正在寻找的 – artjomka 2011-02-24 08:37:13

+0

嗯...足够公平! – 2011-02-25 06:00:48