Re[9]: Go
От: SkyDance Земля  
Дата: 09.05.24 04:01
Оценка: :)
CC>Она тебе выдаст одинаковый ответ, но получить его внутри может по разному. И свалиться внутри может тоже по разному.

Еще раз: функция либо детерминированная, либо зависит от побочных эффектов. Если там "по-разному", суть детерминированность отсутствует, то или ее нужно зарефакторить (если это кишочки, которые не поросли контрактами API) и сделать детерминированной. Если же контракт гвоздями прибит — вырвать волос с головы проектировщика за такой "дизайн", и, увы, перехватывать пролетающее исключение (оно может быть как в виде ли исключения, так return code, который по сути есть проносимое врукопашную исключение) в целях дальнейшего его проброса с дополнительными данными о том, что именно пошло недетерминированно, и почему.

CC>Банальные коды ошибок с логгингом сразу по месту возникновения и пробросом наверх прекрасно справляются.


То есть ты вместо хорошего детерминированного дизайна снова полагаешься на побочные эффекты ("логирование"). И если оно сломано, отфильтровано или засемплировано, — good luck debugging. Нет, это хреновый дизайн. В хорошем дизайне функции работают детерминированно, и из результат зависит только от входных данных. Где это невозможно (скажем, нужно что-то прочитать из другой системы), приходится добавлять метаданные в пролетающее исключение (типа, "спросили у другой системы какой-то параметр, она в тот момент вернула ХХХ").

CC>В куда бОльшем колве мест.


Нет, только в недетерминированных функциях. Которые, кстати, давно уже объявлены злом. Только совсем уж дремучие кодеры не в курсе про функциональный подход.

CC>Для начала многие сложные функции внутри data driven, для разных данных ведут себя сильно по разному, но данных этих у тебя нет и по privacy причинам быть не может.


Да чем бы они ни были driven, или функция чистая (pure), то есть зависит только от входных данных, либо нет. Если это вынужденная грязь, то либо рефакторинг, либо продолжай ставить подпорки (добавлять метаданные).

CC>Добро пожаловать в реальный мир.


Это не реальный мир, а строго огороженные вольеры в зоопарке К счастью, в современном мире есть куда более надежные и качественные подходы к проектированию. Но, понятно, застрявшие во времена "классной сишечки", этак середины 80х, вряд ли смогут осознать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.