clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
kuzmin_m 2017-12-10T16:19:00.000020Z

Привет! Последние 4 месяца я занмался тем, что продумывал, как делать на clojure бизнес-приложения. Свой подход я описываю в методичке https://github.com/darkleaf/building-application. Она еще не закончена, но оснавные идеи уже описаны. Было бы здорово обсудить эти идеи и улучшить изложение. Если кратко, то речь идет о Clean Architecture, Data Mapper, Identity Map, Unit of Work. Еще будет интересно посмотреть на то, как генерируются формы на основе clojure.spec.

dbushenko 2017-12-10T17:43:07.000039Z

@kuzmin_m ЕГЭ сдавал?))

kuzmin_m 2017-12-10T17:44:19.000099Z

@dbushenko очень давно да, там уйма опечаток, простите

dbushenko 2017-12-10T17:46:45.000020Z

в целом -- хорошая попытка, молодцом

dbushenko 2017-12-10T17:49:17.000012Z

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

kuzmin_m 2017-12-10T17:56:54.000229Z

@dbushenko спасибо за отзыв. Идея в том, что бы показать идею хоть как-нибудь, собрать обратную связь и улучшить. Я даю краткое описание и ссылку на подробный материал. Это не книга, а "методичка", я не готов писать нетленку в несколько томов с разбором всех возможных вариантов 😃 Обоснования как раз по ссылкам. По поводу клоунства - можешь дать ссылку на человека, который бы показал, как делать софт приносящий ценность бизнесу?

dbushenko 2017-12-10T17:57:50.000028Z

ну если просто как методичка -- норм

dbushenko 2017-12-10T17:59:53.000092Z

вообще, конечно, DDD на Clojure делать довольно сложно, я не очень себе представляю, как сделать идиоматичный агрегат средствами Clojure так, чтобы не плеваться потом. Думаю, что если компромиссные подходы не годятся, надо делать через абстрактный тип данных и композицию функций, хотя и АДТ в кложе нормально не сделать....

kuzmin_m 2017-12-10T18:01:31.000064Z

у меня есть агрегат, ну или то, что я этим словом называю все это нужно рассматривать как вариацию на тему 😃

kuzmin_m 2017-12-10T18:02:25.000077Z

и по поводу ссылки на человака, кого ни спрошу, никто кроме Мартина назвать не может

troglotit 2017-12-10T18:03:23.000014Z

:rich:

kuzmin_m 2017-12-10T18:03:38.000008Z

где? 😃

troglotit 2017-12-10T18:13:43.000062Z

Ну, Мартин, достаточно много хорошего сделал, заставил многих подумать головой, и не мне называть человека клоуном, но в последние годы он реально имел недальновидные высказывания. :rich: же вместо того чтобы писать блог-посты как делать хороший софт, написал язык для полезного софта. Но даже :rich: на своем последнем выступлении очень сильно ругал типы/pattern matching - приводя примеры из Java, C++, что тоже, недальновидно, кмк.

kuzmin_m 2017-12-10T18:17:44.000045Z

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

kuzmin_m 2017-12-10T18:18:21.000081Z

для этого и нужны нужны протоколы, интерфесы, динамический полиморфизм

dbushenko 2017-12-10T18:42:20.000015Z

Это трындец

dbushenko 2017-12-10T18:42:58.000053Z

Башня из слоновой кости

dbushenko 2017-12-10T18:43:46.000093Z

Сферический Боб Мартин в вакууме