Эргономичный код
819 subscribers
81 photos
3 videos
20 files
401 links
Канал о разработке поддерживаемых бакэндов - про классическую школу TDD, прагматичное функциональное программирование и архитектуру и немного DDD.

Группа: https://t.me/+QJRqaHI8YD

https://azhidkov.pro
Download Telegram
Привет!

Небольшая статейка о вреде временнОй связности и побочных эффектов: https://proandroiddev.com/stop-crafting-your-time-bomb-39f2d26987e0

Единственное что, я бы часть про Элегантные Объекты пропустил - уважаю Бугаенко за его продуктивность, принципиальность и масштабность, но работать с кодом в его стиле я бы не хотел:)

#posts@ergonomic_code #why_no_side_effects@ergonomic_code
Наконец-то, не за долго до четырёхлетия своего индивидуального предприятия, я запилил себе личный сайт:)

https://azhidkov.pro/

Теперь посты я буду выкладывать на 15 минут раньше, и вы можете легко запомнить где можно перечитать любимые:)
Привет!

Малёха солида вам в ленту с утра пораньше:)

Я уже как-то давал ссылку на критику SOLID-а.

А сегодня я подслушал в радиоте ссылку на более развёрнутый пост этого же мужика.
И там он даёт ссылку на критику своей критики:)

Когда-нибудь я обязательно накатаю собственный развёрнутый пост на эту тему:)
А пока у меня на подходе разгромный пост о JPA - уже отлёживается, завтра-после завтра опубликую:)

#posts@ergonomic_code #solid@ergonomic_code
Рад представить вам анонсированный разгромный пост о том почему JPA лучше не использовать в серьёзных проектах:)
Это новый рекордсмен моего блога по объёму - закрыл гештальт:)

Ну и если я вдруг налажал с технической точки зрения - пишите. Может я, наконец, 15 лет спустя открою страшную тайну как правильно готовить JPA:)

#posts@ergonomic_code #whynojpa@ergonomic_code #spring_data_jdbc@ergonomic_code
Думаю опубликовть пост о JPA на Хабре в "Я пиаюрсь". Как думаете какой будет исход?
Anonymous Poll
37%
Слава и +50 читателей
11%
Бан
53%
Линч
Привет!

Мне не хватает 9 единиц кармы, для публикации в "Я пиарюсь", а публиковать в хаб Java я боюсь - вдруг и правда забанят.

Накрутите мне пожалуйста кармы авансом: https://habr.com/ru/users/jdev/ :)
Ох, знаете, что Лёша сейчас сделал?

Случайно забацал бесконечную рекурсию в функции инициализации контейнера для тестов. Как думаете, что было дальше?
Anonymous Poll
24%
Переполнился стек
4%
Кончилось место на корневом разделе
8%
Какая-то гномья приблуда для мониторинга разделов захавала весь процессор
64%
Всё выше перечисленное
Ну и раз уж я вас сегодня заспамил, то вот ещё немного:)
Запилил оператор terminateOn для Kotlin sequence&flow
Предполагаемый юзкейс - функциональное описание эффективной операции до получения терминального значения - считай ретрай

юзается примерно так:
    val res = sequnceOf(1, 2, 3)
.map { delay(it) ; getEntityStatusOnServer() }
.take(15)
.terminateOn { it.isSuccess() || it.isFailed }
.last()
when (res.status) {
success -> println("success")
pending -> println("timeout")
failure-> println("process failed on server")
network_failure-> println("status fetch failed")
}


#tools@ergonomic_code #kotlin@ergonomic_code
Привет!

Наткунлся на прикольную статью об объектах и абстрактных типах данных. Не особо практичная, именно прикольная - автор приходит к выводу, что функции высших порядков чаще используются в ОО, чем ФП программах, и что лямбда исчесления были "untyped λ-calculus was the first object-oriented language.":)

Более практично же обеъекты и АДТ рассмотрены в этой статье.

Если в кратце - объекты не должны быть единственным инструментом разработчка. Объекты надо применять, когда вероятность появления новых типов (наследников, реализаций интерфейсов), выше вероятности появления новых данных - в этом случае "данные" (Алгебраические типы данных), позволят добавить их не трогая старый код.

А иногда надо вообще запретить расширение клиентами, и в этом случае используются Абстрактные типы данных.

#papers@ergonomic_code #oop@ergonomic_code #fp@ergonomic_code
Привет!

Пыль от поста на Хабре улеглась и пришло время подводить итоги:)

1) +4 к карме (+5 -1)
2) +13 рейтинг поста (+19 -6)
3) +1 предложение писать за деньги в один из топовых блогов на Хабре
4) 67 закладок
5) 0 конструктивной критики в комментах (по данным разведки)
6) +26 (+80%) подписчиков канала

Я считаю, что авантюра стала успешной.

Самым важным результатом для меня стали новые читатели - рад вас приветствовать в своём канале и спасибо за доверие.

Такой рост аудитории - хороший повод ещё раз написать, что я за движуху вообще здесь затеял.

Если коротко - то в последние несколько лет у меня стало получаться писать код, который поддерживать и развивать чуть менее больно, чем код, написанный в "стандартном" (для бэков на Java) стиле.
В книге, блоге и канале я пишу что я делаю по другому, почему я это делаю по другому и как я это делаю.

В итоге я хочу получить "методичку", следуя которой другие разработчики смогут без моего участия писать код, который им самим (и возможно мне) будет проще поддерживать.
И вопрос куда пойдём дальше.

С одной стороны я несколько месяцев прокрастинирую финальный пост про виды функций. С другой стороны у меня сейчас критческий настрой и хочется покритиковать слоёную архитектуру. Что вам было бы интереснее в первую очередь?
Anonymous Poll
15%
Виды функций
85%
Слоёная архитектура
0%
Написал в комментах свой вариант
Привет!

Дочитал Just Enough Software Architecture: A Risk-Driven Approach

Она прекрасна - пожалуй лучшая книга по архитектуре и роли архитектора, что я прочитал, рекомендую:)

#books@ergonomic_code #design@ergonomic_code
Привет!

Хотел написать небольшую заметку о SRP, OCP и дизайне типов и залип на 3 часа:)

Представляю вам пост ... <барабанная дробь>... Анкл Боб не всегда прав - критичное настроение всё ещё со мной:) В отпуск мне надо:)

#posts@ergonomic_code #solid@ergonomic_code
хехей, нас 1000000b:)
а ещё 2 недели назад было на порядок меньше:)
экспоненциальный рост есть, можно идти к инвесторам:)
Привет!
Пролистал по диагонали Principles of Package Design - не со всем согласен, но в целом хорошая книга, несёт намного больше пользы, чем вреда
Только не надо брать на вооружиение суффикс Interface, уш лучше префикс I:)

Советую к прочтению молодым программистам, а так же опытным, у которых в проектах:
1) нет модуля core, не зависящего ни от чего
2) есть пакеты service, entities etc с 10+ классов
3) есть пакеты enums, exceptions, dtos
4) есть классы с 7+ полей
Там объясняется почему это плохо и как этого избежать
Если не знали, что Анкл Боба 11, принципов, а не 5 - тоже можно почитать. В этой книге принципы расписаны подробнее, чем у самого Мартина:)

#books@ergonomic_code
Привет!

Небольшой параноидальный оффтоп: https://twitter.com/sdw/status/1389661120500174856?s=20

сигнал запустил рекламную компанию, в которой выдавал юзерам инфу, которую о них знает и перепродаёт фейсбук. Фейсбук их забанил.

А я между делом намылился заказать PinePhone:)
Привет!

Сегодня heartbeat-ный линко пост:)

A co-Relational Model of Data for Large Shared Data Banks - статья Эрика Мейера о том, что Sql и NoSql (на самом деле реляционная и "ключ-значение" модели данных) являются дуальностями:
> What this all means is that coSQL and SQL are not in conflict, like good and evil. Instead they are two opposites that coexist in harmony and can transmute into each other like yin and yang. Because of the common query language based on monads, both can be implemented using the same principles.

Эрик Мейер - мужик который запил LINQ в C# и Rx*, я думаю его можно назвать отцом реактивной движухи в прошлом десятилетии

#posts@ergonomic_code #relational_model@ergonomic_code #sql@ergonomic_code