Я чув, як говорилося, що включення нульових посилань у мови програмування є "помилкою в мільярд доларів". Але чому? Звичайно, вони можуть викликати NullReferenceExceptions, але що робити? Будь-який елемент мови може бути джерелом помилок при неправильному використанні.
А яка альтернатива? Я думаю, замість того, щоб сказати це:
Customer c = Customer.GetByLastName("Goodman"); // returns null if not found
if (c != null)
{
Console.WriteLine(c.FirstName + " " + c.LastName + " is awesome!");
}
else { Console.WriteLine("There was no customer named Goodman. How lame!"); }
Можна сказати так:
if (Customer.ExistsWithLastName("Goodman"))
{
Customer c = Customer.GetByLastName("Goodman") // throws error if not found
Console.WriteLine(c.FirstName + " " + c.LastName + " is awesome!");
}
else { Console.WriteLine("There was no customer named Goodman. How lame!"); }
Але як це краще? У будь-якому випадку, якщо ви забудете перевірити наявність клієнта, ви отримаєте виняток.
Я припускаю, що налагодження CustomerNotFoundException трохи простіше, ніж NullReferenceException, завдяки більш описовій. Це все є для цього?