所以我有一个这样的功能:
public void doSomeWork(List<Item> items){
//modify the items
return;
}
返回无效是一个好设计,还是我最好只返回列表?
答案 0 :(得分:4)
看看JDK本身。您是否看到返回void
的方法? (我知道。)
您的选择与错误的正确或正确的概念无关。这是关于你是否希望允许副作用。
您可以使用以下两种方式之一编写该方法:
public void doSomeWork(List<Item> items){
// You can't modify the items reference, but you can modify the List that it points to by adding or removing Items.
}
这具有修改传递它的List的副作用。如果客户不了解它,可能会给客户带来不愉快的惊喜。
第二种方式意味着传入List并返回修改后的版本:
public List<Item> doSomeWork(List<Item> items){
List<Item> modified = new ArrayList<Item>(items);
// modify the returned List
return modified;
}
客户没有这样的意外:传入的List仍未修改。这是一种更实用的风格。它也是“流利的”。但是,由于您分配了一个新的List,因此需要更多内存。
答案 1 :(得分:1)
不确定。如果没有要返回的内容,则返回类型为void
。您也不需要明确的return;
语句。只是让执行从函数的底部掉下来。
public void doSomeWork(List<Item> items){
//modify the items
}
问题归结为你是否有一个有意义的回报值。完全没有。
答案 2 :(得分:1)
如果在语义上不返回任何内容,那么不返回任何内容都是完全正确的。
答案 3 :(得分:0)
即使它的空白,如果你需要在某个时候退出方法,你可以使用return;。否则无需这样做。
public void doSomeWork(List<Item> items){
if(some condition){
return;
}
// Do my work
}
答案 4 :(得分:0)
有时候某个方法不需要返回值。它的所有工作都是在内部完成的,没有任何迹象真的需要出去。
这是一个很好的设计实践,尤其是使用setter和init()
方法等功能。这些都不需要将值返回给任何调用它来指示任何内容的人。