Re[60]: Haskell нужен! (в Standard Chartered Bank)
От: Mamut Швеция http://dmitriid.com
Дата: 26.02.15 14:58
Оценка:
EP>Для задачи Mamut'а
Автор: Mamut
Дата: 05.02.15
это действительно не имеет смысла. Я уже многократно об этом говорил:

EP>

EP>>Если же для запуска функции нет необходимости делать проверки, change_amount сама всё что нужно проверяет внутри, и более того её запуск с невыполненными условиями не является ошибкой, а вполне штатным режимом — то пытаться переписать все эти внутренние проверки на типы, не вижу смысла, это никак не отразится на местах вызова этой функции.



Я про это тоже говорил. Ты придумал себе какие-то предусловия и активно пытаешься это энфорсить. В моем случае условия никуда не исчезли — это все те же условия. Только ВНЕЗАПНО для них «не имеет смысла»

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

В итоге получается что?


Order = load_order(Id),
UpdatedOrder = process_order(Order).  
  %% внутри process_order «это действительно не имеет смысла» ©

....

%% в другом месте

Order = load_order(Id),
UpdatedOrder = increase_order_amount(Order, Amount).
  %% внутри increase_order_amount «это действительно не имеет смысла» ©


%% в третьем месте

Order = load_order(Id),
UpdatedOrder = archive_order(Order).
  %% внутри archive_order «это действительно не имеет смысла» ©

%% и т.п.


Где «это» тогда имеет смысл? То, что в process_order/increase_order_amount/archive_order мы передаем именно Order, а не GoodsItem? Ну это у нас и так отлавливают интеграционные тесты, и таких случаев возникает хорошо если два в год.



dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.