我想知道哪种方法更适合从方法返回参数:
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>();
您更喜欢哪个选项?为什么?请有参数:)
干杯
答案 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;