Я постоянно слышу, как люди говорят о том, как не-нулевые ссылочные типы будут решать так много ошибок и сделать программирование намного проще. Даже создатель null называет его ошибка в миллиард долларов, а SpeС# внедрил типы с недействительными для борьбы с этой проблемой.
РЕДАКТИРОВАТЬ: Игнорировать мой комментарий о SpeС#. Я неправильно понял, как это работает.
РЕДАКТИРОВАТЬ 2: Я должен разговаривать с неправильными людьми, я действительно надеялся, чтобы кто-то спорил с: -)
Итак, я бы предположил, что в меньшинстве, что я ошибаюсь, но я не могу понять, почему в этой дискуссии есть какие-то заслуги. Я вижу нуль как инструмент поиска ошибок. Рассмотрим следующее:
class Class { ... }
void main() {
Class c = nullptr;
// ... ... ... code ...
for(int i = 0; i < c.count; ++i) { ... }
}
BAM! Нарушение доступа. Кто-то забыл инициализировать c
.
Теперь рассмотрим следующее:
class Class { ... }
void main() {
Class c = new Class(); // set to new Class() by default
// ... ... ... code ...
for(int i = 0; i < c.count; ++i) { ... }
}
Упс. Петля тихо пропущена. Это может занять некоторое время, чтобы выявить проблему.
Если ваш класс пуст, код все равно будет терпеть неудачу. Почему бы вам не сказать вам систему (хотя и немного грубо), вместо того, чтобы самим понять это?