从方法中返回params

时间:2010-06-25 19:49:18

标签: java coding-style

我想知道哪种方法更适合从方法返回参数:

1. 

    if (someBooleanIsTrue)
    {
        someTypeList = getTypeInstance(param1, param2);
    }

    else if (anotherBooleanIsTrue)
    {
        someTypeList = getTypeInstanceSecondMethod(param1, param2);
    }
    return someTypeList;

2

List<SomeType> someTypeList = null;
...
if (someBooleanIsTrue)
{
   return getTypeInstance(param1, param2);
}

else if (anotherBooleanIsTrue)
{
   return getTypeInstanceSecondMethod(param1, param2);
}
return new ArrayList<SomeType>();

您更喜欢哪个选项?为什么?请有参数:)

干杯

3 个答案:

答案 0 :(得分:2)

人们告诉你任何给定的方法只能在一个地方返回是很常见的。我发现如果方法保持简短和简单,那么多次返回并不像可读性问题那么大。书clean code对可读代码的主题进行了很好的讨论,包括这个特定主题。

答案 1 :(得分:1)

我更喜欢第二个选项,因为第一个选项返回一个空值。

当返回列表时,很可能调用方法将遍历列表,并且在没有结果的情况下,在> 80%的情况下迭代空列表是完全正确的行为。

使用null,您总是必须检查返回null的情况,这会产生代码并且很容易忘记,因为它在概念上是不同的。

答案 2 :(得分:1)

我更喜欢1)因为单一的返回路径,但是如果您不想返回null,我会进行此更改:

if (someBooleanIsTrue)
{
    someTypeList = getTypeInstance(param1, param2);
}
else if (anotherBooleanIsTrue)
{
    someTypeList = getTypeInstanceSecondMethod(param1, param2);
}
if (someTypeList == null)
{
    someTypeList = new List<SomeType>();
}
return someTypeList;