∏ρ؃uñçτØρ Øπτµç∑ 👁‍🗨››››

∏ρ؃uñçτØρ Øπτµç∑ 👁‍🗨››››

72
6 Дек 2018

Реализовал сегодня на работе Tagless Final на TypeScript для работы с браузерным стораджем. А потом выкинул нахуй. Расскажу немного о контексте такого решения.

Сейчас на работе я пишу SDK, с помощью которого будут писать переиспользуемые модули — блоки бизнес-функциональности, которые можно подключать к любому (в теории) приложению как некие черные ящики, тем самым экономя бизнесу деньги на повторную разработку. В рамках этого SDK нужно реализовать слой персистенса, абстрагирующегося от некоего хранилища. Это может быть session storage, local storage, IndexedDB, WebSQL или вообще персист на сервер через REST. Я спроектировал это так, что модуль получает на вход абстрактную алгебру StorageAlgebra, у которой эффект синхронного или асинхронного вычисления вынесен в некую монаду M, о которой модуль знать ничего не знает до тех пор, пока его не запустят с конкретным инстансом нужного стораджа. По сути, мне пришлось реализовать паттерн Tagless Final для этого стораджа. В тайпскрипте, как в языке, где нет типов с дырками, это отдельная боль. И вот, вроде бы, счастье — тесты зелёные, можно подсовывать как синхронные, так и асинхронные алгебры, и всё будет работать…

Но есть нюанс. В рамках продвигаемой архитектуры приложений я требую, чтобы все работы с хранилищем и сетевыми запросами происходили в рамках redux-saga. Которые сами по себе асинхронные. И этот факт наглухо перечёркивает всю предполагаемую гибкость. Мы уже живём в асинхронном контексте, нет пути назад. Поэтому я выкинул весь код с TF, попутно избавив себя от необходимости объяснять его коллегам из вверенных мне команд, оставив в качестве единого для всех интерфейса пакет localForage.

Мораль: нельзя позволять себе терять виденье общей картины, углубляясь в столь приятные (но порой ненужные) технические детали.

Такие дела.

Другие посты по теме...

Darth Biology Darth Biology @darthbiology
#новость Ну что, друзья, будем потихоньку возвращаться к обычному режиму публикаций. И начнём мы с того, какие изменения в области здравоохранения ждут жителей России. По пунктам: • финансирование диспансерного наблюдения...
SHARE WOOD Платное теперь бесплатно! SHARE WOOD Платное теперь бесплатно! @eachfree
​​🍏 Webformyself - Анатомия прибыльного лендинг пейдж По итогам курса: Вы будете четко понимать, что такое автономная целевая страница; Сможете создавать хорошие лендинги, которые справляются со своей задачей; Узнаете...
Хитрости жизни Лайфхаки Хитрости жизни Лайфхаки @lifehacks_tg
6 секс-позиций, которые женщины просто ненавидят В этих позах партнёрше может быть некомфортно. Или же она банально не получает от них удовольствия. Но все недостатки можно исправить! https://goo.gl/pQvMn6...
Сталингулаг Сталингулаг @stalin_gulag
Не могу спокойно читать напыщенные блевотной бравадой речи бюрократической швали и прочих героев клавиатуры и мыши, которые в своей жизни ничего тяжелее хуя не держали, причём чаще всего даже не своего. Как же омерзительны...
Твои Блогерши Твои Блогерши @karinasexy
ВСЁ. Пиздец Телеграмму! Каждый день правительство блокирует миллионы IP различных сервисов в погоне за творением Дурова. В результате не работают крупные сайты, многие компании лишаются возможности принимать платежи....