2014-01-31 33 views
0

方法正在返回可能为空的人员列表。返回一个空的(实体)列表或null是更好吗?

是更好地返回空列表或只是

有些人可能会认为这是一个意见问题,但我想知道什么是一个新的应用程序的最佳策略?

public List<PersonEntity> findByName(List<String> names) { 
    List<PersonEntity> list = new ArrayList<PersonEntity>(); 
    ...JPA-stuff getting that list 
    return list; 
} 

返回null。 null更容易处理?

public List<PersonEntity> findByName(List<String> names) { 
    List<PersonEntity> list = null; 
    ...JPA-stuff getting that list 
    return list; 
} 

回答

1

我觉得这可能反过来是一个意见问题,但我喜欢返回空集,并避免必须处理null,如果它可以。

这一切都取决于你对这个列表做什么,但是让我们说一旦你得到列表后,你需要遍历它。

如果它的空集合,你尝试迭代,它没有看到列表中的任何东西,你没事。

result = findByName(names); 
//...safe to loop through result 

如果它为空,你尝试迭代,你会得到一个异常,因此需要先检查null并添加特殊处理。

result = findByName(names); 
if (result != null) 
{ 
    //...handle stuff (now it is safe to loop through result) 
} 
else 
{ 
    //..special handling if needed 
} 

总而言之,这取决于您对数据所做的事情,以及是否可以避免检查空集(例如在第一个示例中)。

+0

什么是新应用程序的最佳策略。您的个人意见也将不胜感激。谢谢。 –

+0

我个人通常会返回null。当第一次创建函数时,我可能并不完全知道它将被使用的所有情况,并且我认为使用null是有好处的,这样如果需要的话我可以进行特殊处理。从技术上讲,你可以达到相同的结果发送空集,但我觉得它是一个更干净,可能更清晰的结果与空。 我希望这可以帮助。 :) – TheOneWhoPrograms

相关问题