amarao: (Default)
[personal profile] amarao
Чем больше я про это думаю, тем больше я его хочу.

Любое замыкание (в расте) может управлять control flow приложения, но только в смысле panic!. Замыкание не может управлять другим control flow, например, break/continue/return.

Это делает не экивалентным цикл итератора и применение map для того же самого итератора. Несправедливо! Если бы только компилятор понимал управление control flow и мог правильно проверить его совместимость...

Date: 2024-05-25 05:25 am (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Вообще мысли вида «хочу иметь break/continue/return expr/throw expr в виде first-class значения» обычно приходят при попытке применить рефакторинг Extract Method к куску говнокода, где на входе коллекция, потом по ней for выше человеческого роста, а внутри этого for’а — вышеупомянутые управляющие конструкции в ассортименте.

Date: 2024-05-27 10:04 am (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Каждое i должно быть обработано каждой из 10000 функций KYC/AML подразделения

А характерный размер коллекции (из которой каждое i)?

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

Date: 2024-05-27 10:07 am (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

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

Date: 2024-05-29 12:15 pm (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Ну и? Надо сесть за моделирование и тип возврата этих функций-требований сформулировать в терминах предметной области («этому разрешить без очереди и без дальнейших проверок», «да, если не противоречит другим проверкам», «минус десять очков Гриффиндору», «ни за что и никогда»), а не в терминах управляющих конструкций того цикла, в котором перебираются проверки.

Если проверки одного клиента влияют на результаты проверок для других (например, у нас ограниченный ресурс), то, значит, у нас опять не задача на map-map-filter, а на map-map-sum-sort-take 100.

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 03:42 pm
Powered by Dreamwidth Studios