Re[3]: Проверка объекта на null
От: HowardLovekraft  
Дата: 29.12.11 06:32
Оценка: 1 (1) +3
Здравствуйте, Аноним, Вы писали:

А>Как же люди код на C++ сопровождают?

Ответ в вопросе: они сопровождают код на C++, и там это норма, а в C# — нет. "Здесь так принято", ага.

Вам дали сопровождать код, написанный ТС'ом. Вы ничего не знаете о его привычке создавать оператор неявного преобразования к Boolean, спросить не можете, потому что он уволился за месяц до вашего найма, задокументировать свою привычку он забыл.

Глядя на этот фрагмент кода, какое предположение о типе переменной info вы сделаете?
var info = GetDetailInfo();
if (info) // вроде Boolean
{
  Debug.WriteLine(info.ToString());

  // ...
}

Теперь вы читаете код дальше и видите другую строчку:
ValidateInfo(info); // хм, нафига делать валидацию Boolean?

а потом еще:
  if (info.IsValid()) // блин, у Boolean точно нет метода IsValid,
                      // может быть, это extension?
  {
    // ...
  }

В итоге вы лезете в определение типа и обнаруживаете там оператор приведения к Boolean.
Да, есть IntelliSense, да есть явное указание типа переменной (что не всегда удобно и можно забыть, какой у нее тип, если метод достаточно длинный), но это все равно лишние телодвижения. Ради чего?

Еще 5 копеек о преобразовании типов. Кмк, идеологически, преобразование типов — это преобразование данных, т.е. состояния объектов с использованием какой-то закономерности. В том, что делает ТС, преобразования состояния объекта нет, оно не анализируется, а в случае с null просто не может быть проанализировано. Т. е. отверткой забиваются гвозди.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.