Re[20]: А С++ то схлопывается...
От: so5team https://stiffstream.com
Дата: 02.11.19 14:03
Оценка:
Здравствуйте, Pzz, Вы писали:

S>>В том-то и дело, что для простейшего случая это и не нужно. В нем есть операция приведения к типу T, поэтому показанный тривиальный constrained_value можно использовать вот так, например:


Pzz>Мне этот код не нравится. Не нравится он мне тем, что из него может прилететь исключение. Причем в этом исключении будет сказано лишь, что оно относится к некоему constrained_value.


Вас куда-то постоянно уносит в сторону. И, складывается ощущение, что это от незнания инструмента о котором вы пытаетесь судить. А может и от специфического опыта.

Суть constrained_value в том, чтобы содержать заведомо корректное значение. Ответственность за получение этого значения лежит на разработчике. Соответственно, прежде чем поместить что-то в constrained_value вы можете сделать столько проверок, сколько вам нужно. И проинформировать о проблемах так, как вам хочется. Но, если вы этого по каким-то причинам не сделали, то constrained_value не позволит вам вернуть заведомо некорректное значение. И тот, кто ждет от вас constrained_value, может быть в этом уверен.

S>>Теперь хотелось бы посмотреть на это в чистом С.


Pzz>В C я написал бы явную проверку.


И после этого вы еще чего-то говорите про человеческий фактор и его влияние?

Pzz>И вернул бы явную ошибку. А в Go еще удобнее, я вернул бы результат и ошибку одним махом, там функция может вернуть сразу несколько значений.


Рискую вас удивить, но в C++ вы запросто можете вернуть, скажем expected, которое будет содержать либо нормальный результат, либо ошибку. Что сильно лучше, чем два значения в Go, одно из которых заведомо некорректно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.