Re[7]: Rust vs C++ 17
От: AlexRK  
Дата: 11.01.16 16:13
Оценка: +1 -1
Здравствуйте, LaPerouse, Вы писали:

LP>Возвращать код ошибки — это прошлый век.


Код ошибки — да, прошлый век.
Алгебраический тип — нет.

LP>Для ошибок есть исключения.


В требовательном к надежности коде исключения неприемлемы. В таких случаях что взять в качестве альтернативы union-типам?
(Хотя лично мое мнение — исключения вообще не нужны, но это уже к теме не относится.)

Ну или другой пример — передача в функции нуллабельных ссылок. Здесь какие варианты? Хардкод особого "нулла" в компиляторе, без контроля разыменования, как сейчас везде сделано?

LP>foo (Foo val1 val2) = val1 + val2

LP>foo (Foo val1 val2 val3) = val1 + val2
LP>Добавляем в Foo третье поле val3. Конкретно в функции foo это поле НЕ используется. Но мы должны ее изменить

Разумеется, мы должны ее изменить. Потому что сейчас не используется, а через месяц будет использоваться. Это уже деталь реализации — что используется, а что нет.

LP>И таких функций по всему коду — море, в разных модулях и классах.


Ну и что?
Когда мы добавляем параметр функции, у нас тоже море вызовов по всему коду, которые надо изменить.
Отредактировано 11.01.2016 16:14 AlexRK . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.