Słyszałem, że powiedzenie, że włączenie zerowych referencji w językach programowania jest „błędem miliarda dolarów”. Ale dlaczego? Jasne, mogą powodować wyjątki NullReference, ale co z tego? Każdy element języka może być źródłem błędów, jeśli zostanie użyty nieprawidłowo.
A jaka jest alternatywa? Przypuszczam, że zamiast powiedzieć to:
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!"); }
Możesz to powiedzieć:
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!"); }
Ale jak to jest lepsze? Tak czy inaczej, jeśli zapomnisz sprawdzić, czy klient istnieje, otrzymasz wyjątek.
Podejrzewam, że wyjątek CustomerNotFoundException jest nieco łatwiejszy do debugowania niż wyjątek NullReferenceException, ponieważ jest bardziej opisowy. Czy to wszystko?