Java 从方法返回参数

Java 从方法返回参数,java,coding-style,Java,Coding Style,我想知道从方法返回参数的更好方式是什么: 1. if (someBooleanIsTrue) { someTypeList = getTypeInstance(param1, param2); } else if (anotherBooleanIsTrue) { someTypeList = getTypeInstanceSecondMethod(param1, param2); } return so

我想知道从方法返回参数的更好方式是什么:

1. 

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

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

List someTypeList=null;
...
如果(某个布尔人真的)
{
返回getTypeInstance(param1,param2);
}
否则如果(另一个布尔值)
{
返回getTypeInstanceSecondMethod(param1,param2);
}
返回新的ArrayList();
你更喜欢哪种选择?为什么?请提供参数:)


干杯

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

当返回列表时,调用方法很可能会遍历该列表,并且在80%以上的情况下,在没有结果的情况下遍历空列表是正确的行为


对于null,您必须始终检查返回null的情况,因为它在概念上是不同的,这使得代码很容易忘记。

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

当返回列表时,调用方法很可能会遍历该列表,并且在80%以上的情况下,在没有结果的情况下遍历空列表是正确的行为


使用null时,您必须始终检查是否返回了null,这使得代码很容易忘记,因为它在概念上是不同的。

人们通常会告诉您,任何给定的方法只应在一个位置返回。我发现,如果方法保持简短,那么多重返回的可读性问题就没有那么大了。这本书对可读代码的主题进行了很好的讨论,包括这个特定的主题。

人们通常会告诉你,任何给定的方法都应该只在一个地方返回。我发现,如果方法保持简短,那么多重返回的可读性问题就没有那么大了。这本书对可读代码的主题进行了很好的讨论,包括这一特定主题。

我更喜欢1)因为只有一个返回路径,但如果您不想返回null,我会做出以下更改:

if (someBooleanIsTrue)
{
    someTypeList = getTypeInstance(param1, param2);
}
else if (anotherBooleanIsTrue)
{
    someTypeList = getTypeInstanceSecondMethod(param1, param2);
}
if (someTypeList == null)
{
    someTypeList = new List<SomeType>();
}
return someTypeList;
if(someBooleanIsTrue)
{
someTypeList=getTypeInstance(param1,param2);
}
否则如果(另一个布尔值)
{
someTypeList=getTypeInstanceSecondMethod(param1,param2);
}
if(someTypeList==null)
{
someTypeList=新列表();
}
返回someTypeList;
我更喜欢1),因为只有一个返回路径,但如果您不想返回null,我会进行此更改:

if (someBooleanIsTrue)
{
    someTypeList = getTypeInstance(param1, param2);
}
else if (anotherBooleanIsTrue)
{
    someTypeList = getTypeInstanceSecondMethod(param1, param2);
}
if (someTypeList == null)
{
    someTypeList = new List<SomeType>();
}
return someTypeList;
if(someBooleanIsTrue)
{
someTypeList=getTypeInstance(param1,param2);
}
否则如果(另一个布尔值)
{
someTypeList=getTypeInstanceSecondMethod(param1,param2);
}
if(someTypeList==null)
{
someTypeList=新列表();
}
返回someTypeList;

在第一种情况下,可以通过在方法开头将someTypeList初始化为新的ArrayList来避免这种情况。我认为上面的主要问题是,是多个返回值更合适,还是在某个地方设置一个结果变量,然后在最后返回更合适。@Angelo你是对的。我主要关心的是函数的用户及其对代码库其余部分的影响。我也倾向于收集返回值,并在最后退出,尽管我对此并不虔诚。在第一种情况下,可以通过在方法开始时将someTypeList初始化为新的ArrayList来避免这种情况。我认为上面的主要问题是,是多个返回值更合适,还是在某个地方设置一个结果变量,然后在最后返回更合适。@Angelo你是对的。我主要关心的是函数的用户及其对代码库其余部分的影响。我也倾向于收集返回值并在最后退出,尽管我对此并不虔诚??新列表();嗨,我不知道这个语法。你确定是Java吗?返回一些类型列表??新列表();嗨,我不知道这个语法。你确定是Java吗?