Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужно ли проверять входные параметры на null? / 12 сообщений из 12, страница 1 из 1
18.02.2013, 16:43
    #38156011
tercat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
Нужно ли проверять входные параметры метода на null?

ведь если написать if(param==null) return; мы будем дольше отлавливать баги, лучше пускай сработает эксепшн, поэтому на null лучше не проверять. я прав или нет?
...
Рейтинг: 0 / 0
18.02.2013, 16:50
    #38156037
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
нет
...
Рейтинг: 0 / 0
18.02.2013, 16:57
    #38156051
Varcom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
tercat,
Диагностика друг программиста. Чем больше ты будешь получать осмысленных сообщений при ошибках, тем проще будет отыскать эти ошибки. Поэтому, не полагайся на порождаемые фреймворком эксепшины, проверяй сам условия и генерируй свои эксепшины.
...
Рейтинг: 0 / 0
18.02.2013, 17:12
    #38156108
Остап Ибрагимович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
Varcomtercat,
Диагностика друг программиста. Чем больше ты будешь получать осмысленных сообщений при ошибках, тем проще будет отыскать эти ошибки. Поэтому, не полагайся на порождаемые фреймворком эксепшины, проверяй сам условия и генерируй свои эксепшины.

+1
...
Рейтинг: 0 / 0
18.02.2013, 17:22
    #38156137
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
tercatНужно ли проверять входные параметры метода на null?

ведь если написать if(param==null) return; мы будем дольше отлавливать баги, лучше пускай сработает эксепшн, поэтому на null лучше не проверять. я прав или нет?Давайте различать три возможных ситуации.
1) Аргумент метода может быть null и это нормально (в С# это странная ситуация, обычно вместо этого используется "нулевой объект" - а вот в Objective-C такое вполне бывает). Отдельная проверка не нужна, падение при аргументе равном null - ошибка метода, а не вызвавшей стороны.
2) Аргумент метода может быть null, но это ненормально (т.е. мы по какой-то причине не в состоянии отвечать за то, кто и с какими аргументами вызывает метод и не можем ставить вызывающей стороне условия). Нужна отдельная проверка на осмысленность переданных данных, включающая, но не обязательно ограничивающаяся проверкой на null. Падение при аргументе равном null - ошибка метода, а не вызвавшей стороны.
3) Предусловия метода оговаривают, что аргумент не может быть null. Проверка на null должна проводиться в форме утверждения, вызывающего немедленное падение с указанием причины при отладке; в рабочей версии проверка может остаться и записывать о проблеме в лог, пытаясь как-то восстановить выполнение программы, либо остаться и аварийно завершать программу, по возможности сохраняя данные пользователя, либо (если соответствующий фрагмент кода критичен по скорости выполнения и хорошо протестирован) быть изъята из кода.
...
Рейтинг: 0 / 0
18.02.2013, 18:56
    #38156294
tercat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
То есть так писать оптимально?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
void f(SomeType s)
{
  if (s == null)
  {
    throw new ArgumentNullException("s cannot be null.");
  }

  // Use s
}
...
Рейтинг: 0 / 0
18.02.2013, 19:11
    #38156308
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
Код: c#
1.
2.
3.
4.
5.
6.
void f(SomeType s)
{
  Contract.Requires(s != null, "s cannot be null.");

  // Use s
}


Контракты для кода
...
Рейтинг: 0 / 0
19.02.2013, 12:17
    #38157151
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
skyANA,

я так понял только Net 4.5?
...
Рейтинг: 0 / 0
19.02.2013, 13:12
    #38157255
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
netivanskyANA,

я так понял только Net 4.5?Нет, ещё и .NET Framework 4.
P.S.: в MSDN вроде на каждой странице есть ссылка "Другие версии".
...
Рейтинг: 0 / 0
19.02.2013, 13:49
    #38157342
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
skyANA,

у меня ссылка почему-то не работала. Вообщем занимательный момент.
...
Рейтинг: 0 / 0
19.02.2013, 20:41
    #38158041
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
skyANA
Код: c#
1.
2.
3.
4.
5.
6.
void f(SomeType s)
{
  Contract.Requires(s != null, "s cannot be null.");

  // Use s
}



Контракты для кода

Ну и чем это помогает обработать ошибку?
...
Рейтинг: 0 / 0
20.02.2013, 08:17
    #38158390
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли проверять входные параметры на null?
Cat2skyANA
Код: c#
1.
2.
3.
4.
5.
6.
void f(SomeType s)
{
  Contract.Requires(s != null, "s cannot be null.");

  // Use s
}



Контракты для кода

Ну и чем это помогает обработать ошибку?Не понял вопроса. Статью по ссылке читали?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужно ли проверять входные параметры на null? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]