возвращение параметров из метода - PullRequest
0 голосов
/ 25 июня 2010

Мне было интересно, какой стиль лучше вернуть параметру из метода:

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 ]

2 голосов
/ 26 июня 2010

Люди часто говорят вам, что любой данный метод должен возвращаться только в одном месте. Я обнаружил, что если методы остаются короткими и простыми, то множественные возвраты не так важны для удобства чтения. В книге clean code довольно неплохо обсуждается тема читабельного кода, включая эту конкретную тему.

1 голос
/ 26 июня 2010

Я предпочитаю 1) из-за единственного пути возврата, но я бы внес это изменение, если вы не хотите возвращать нуль:

if (someBooleanIsTrue)
{
    someTypeList = getTypeInstance(param1, param2);
}
else if (anotherBooleanIsTrue)
{
    someTypeList = getTypeInstanceSecondMethod(param1, param2);
}
if (someTypeList == null)
{
    someTypeList = new List<SomeType>();
}
return someTypeList;
1 голос
/ 25 июня 2010

Я предпочитаю 2-й вариант, потому что 1-й вариант возвращает нулевое значение.

Когда возвращаются списки, есть вероятность, что вызывающий метод будет выполнять итерацию по списку, и в> 80% случаев итерацию попустой список, когда нет результатов, является абсолютно правильным поведением.

При использовании null всегда нужно проверять, возвращается ли значение null, что делает код и его легко забыть, поскольку оно концептуально отличается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...