Производительность / Стиль Вопрос о возвращении из метода / функции - PullRequest
1 голос
/ 16 апреля 2009

Я нашел такой код в проекте, над которым я работаю

public SqlDataReader SomeMethod(int someParam)
{
      // ... some code goes here
      SqlDataReader dataReader = m_command.ExecuteReader(CommandBehavior.CloseConnection);
      return dataReader;
}

Мне было интересно, что лучше, оригинал или ниже

public SqlDataReader SomeMethod(int someParam)
{
      // ... some code goes here
      return  m_command.ExecuteReader(CommandBehavior.CloseConnection);
}

Есть ли какое-то преимущество в создании переменной и ее возврате, а не в возврате созданного читателя? Я думаю, что нет, так как это просто ссылка. Пример, который я привел, был тем, что я нашел, но это мог быть любой тип переменной. Одна вещь, о которой я могу думать, это во время отладки, вероятно, приятно посмотреть, что находится в переменной.

Кто-нибудь хотел бы внести свои 2 цента?

Ответы [ 2 ]

2 голосов
/ 16 апреля 2009

Отладка, вероятно, лучшая причина. С первым способом легче, например, проверьте, если dataReader равно null, прежде чем возвращать его.

Как вы сказали, разницы в производительности не должно быть. Если этот метод вызывается часто, JIT-компилятор (если он включен) с большой вероятностью оптимизирует локальную переменную.

1 голос
/ 16 апреля 2009

Любой полуприличный компилятор оптимизирует первый пример так, чтобы dataReader не нужно было хранить во временной переменной. Другими словами, оба примера должны иметь одинаковую эффективность.

Лично я предпочитаю второй (более короткий) пример, поскольку разбиение этой строки на две строки совсем не упрощает чтение.

...