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

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

https://azhidkov.pro
Download Telegram
Эргономичный код
Какой вариант вам было проще всего понять?
Привет!

Фух, вы видели эту гонку? Она была валидольной:)

Не в обиду автору второго варианта, но вчера вечером 5-ый вариант лидировал с перевесом в один (мой:)) голос. И сегодня с утра я с замиранием сердца открывал канал, потому что победа второго варианта поставила бы меня в неловкое положение.

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

Ну и да, 5ый вариант, очевидно, был одним из моих:) На самом деле первым вариантом, который я, подглядев у одного из участников, упростил заменив isNegative на sign :)

Ещё раз спасибо всем отозвавшимся - если хотите, напишете мне в личку - опубликую пост с именными благодарностями:)
👍9
А, ну и конечно спасибо всем проголосовавшим - вы помогли мне свериться с реальностью и выбрать объективно наилучший вариант для статьи:)
7
Привет!

У меня одна большая и несколько маленьких новостей:)

Большая новость

Я начал новый этап работы над Эргономичным подходом.

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

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

Поэтому я решил перейти на формат структурированной вики и запустил отдельный сайт для Эргономичного подхода — https://ergowiki.azhidkov.pro 🎉🎉🎉

Пока что он больше похож на индексный указатель моего блога, но у него намного более наглядная структура и я планирую существенную часть 25-ого года посвятить тому, чтобы методично наполнять этот сайт.
Обращайте внимание на версии статей - если вторым числом стоит 0, то внутри либо набор ссылок, либо несколько тезисных предложений, либо неотредактированный черновик.

Однако кое-что интересненькое там уже есть:
1. свежак и с версией v1.1.0 — гайдлайн обработки ошибок, в котором я вернул в милость выброс исключений в коде приложения;
2. Несколько шаблонов работы со Spring Data JDBC;
3. Три черновых подхода к описанию модели неизменяемых реляционных данных. Они написаны в режиме потока сознания, но, на мой взгляд, содержат оригинальные и любопытные идеи.

Наконец, самое главное — по многочисленным просьбам подписчиков, там есть автоматическая поддержка тёмной темы:) Кроме подсветки синтаксиса. И картинок:)

Маленькие новости

Помимо запуска сайта для ЭП, я ещё и причесал личный сайт. Изменений там довольно много, подсвечу только те, что вам могут быть интересны на мой взгляд.

Во-первых, я собрал на основной странице блога все свои посты за всё время — всего там сейчас 62 поста.

Во-вторых, я протегал все эти 62 поста.
Избранные подборки:
- Кейсы
- Функциональная архитектура
- Эргономичный подход
- Эргономичное тестирование

В-третьих, я завёл страничку со списком своих публичных выступлений, где, кроме самих записей есть и ссылки на слайды.
🔥14👍85
Привет!

Мысли в слух.

Наткнулся на очередную свеженькую статью по чистой архитектуре.
В двух словах: чистая архитектура - это не про пакеты - не заводите пакеты domain, application, infrastructure, web, заводите пакеты по фичам.
В целом ничего супероригинального, но любопытный аргумент в пользу пакетирования по фичам там есть — по мере жизни приложения, у него появляются новые фичи, а новые слои — практически никогда.

И так как покой мне только снится, это меня натолкнуло на мысль о потенциальной эргономичной структуре программ в4. в3 выглядит так, напомню.
Сейчас она у меня в целом работает и серьёзных нареканий нет, но мне не нравится фактическое дублирование содержания пакетов app и core, в случае если app декомпозируется по фичам.

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

#posts@ergonomic_code #clean_architecture@ergonomic_code #ergo_approach@ergonomic_code #ergo_arch@ergonomic_code
Привет!

Из своих планов на "до отпуска" я не осилил только записать и выложить запись лайтненинга про Spring Data JDBC.
Зато запустил вики, поэтому решил таки пойти в отпуск до 1 апреля.

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

И чтобы вы не скучали эти три месяца - подготовил для вас карту канала - уверен, в ней вы сможете найти себе что-то интересненькое почитать/посмотреть как минимум на каникулы, а то и до 1 апреля.

PS>
А ну и лайтенинг тоже собираюсь таки дозаписать в отпуске. Ещё минут 20 к записанным 2 на текущий момент:)
Карта канала

Добро пожаловать на канал "Эргономичный код" — канал о разработке поддерживаемых кодовых баз в общем и моём подходе к этой задаче — Эргономичном подходе.

Что такое Эргономичный подход?
По большому счёту это небольшой набор принципов, взятых в основном из классической школы TDD, функциональной архитектуры и DDD, и большой набор рецептов — моделей, методик и шаблонов —, которые позволяют команде быстро создавать кодовые базы, соответствующие этим принципам и, как следствие, лёгкие в поддержке.
Подробности на сайте Эргономичного подхода

В Эргономичном подходе есть что-то уникальное?
Да. Идея представления системы как модели её эффектов в виде диаграммы эффектов и методика проектирования на базе этой модели.

"Слова дёшевы, покажи мне код!"
Trainer Advisor — некоммерческий, но реальный (~17K строк Котлин кода, 15 таблиц, 2 настоящих пользователя, горки костылей, "компромиссных решений" и исторических наслоений) проект с открытым исходным кодом, разрабатываемый по Эргономичному подходу. В этот проект можно поконтрибьютить и на своём опыте прочувствовать работу с эргономичной кодовой базой.

Project Mariotte — минимальный демонстрационный пример кодовой базы, написанной по Эргономичному подходу, на примере операции бронирования номера в отеле

Есть что посмотреть или послушать?
Да, все мои публичные выступления собраны на одной странице

А почитать, кроме канала?
Да, в блоге

В блоге и канале есть подборки:
- Кейсы (в блоге, в канале #case@ergonomic_code)
- Примеры кода (в блоге)
- Эргономичный подход (в блоге, в канале #ergo_approach@ergonomic_code)
- Эргономичное тестирование (в блоге, в канале #ergo_testing@ergonomic_code)
- Функциональная архитектура (в блоге, в канале #functional_architecture@ergonomic_code)
- Эргономиный персистанс (в блоге, в канале #ergo_persistance@ergonomic_code)
- Что ещё почитать (в блоге, в канале #books@ergonomic_code, #posts@ergonomic_code, #papers@ergonomic_code)
- Что ещё посмотреть (в блоге, в канале #talks@ergonomic_code)

А у меня вопрос!
Приходите в группу - там целому сообществу (более 100 крутых инженеров) можно задать любой вопрос по тематике канала - Эргономичный подход, классическая школа ТДД, ФА, ФП, в целом дизайн модели и системный дизайн
🔥64👍3
Эргономичный код pinned «Карта канала Добро пожаловать на канал "Эргономичный код" — канал о разработке поддерживаемых кодовых баз в общем и моём подходе к этой задаче — Эргономичном подходе. Что такое Эргономичный подход? По большому счёту это небольшой набор принципов, взятых…»
Привет!

С наступившим новым годом!

Принципы программирования от разработчика HTMX - Prefer if statements to polymorpism

Особенно понравилось:
It states that a high-level module can depend on a low-level module, because that’s how software works.

Сразу видно - человек давно в индустрии:)

#posts@ergonomic_code #design@ergonomic_code #htmx@ergonomic_code
👍42
Привет!

Молния! Похоже, JPA-тусовка начала двигаться в сторону эргономичности.

Я про Jakarta Data слышу впервые и пост только по диагонали просканировал, но судя по фразе:
Заметьте, что update — это отдельная операция, а репозитории Jakarta Data всегда stateless

В одном проекте можно будет совместить JPA под прикрытием Jakarta Data и Эргономичный подход.

А для меня это означает, что порог входа в ЭП снижается.
4👍4