Чистый микроблог

Последние пару лет был занят тем, что искал способ как распутать приложение, в котором был применен архитектурный паттерн "The Big Ball of Mud".

Применять этот паттерн не сложно - просто решаешь все поступающие задачи не раздумывая над такими "мелочами" как зависимости в коде.

Немножко упорного труда и цель достигнута: меняешь в одном месте - ломается в трех других.

Причем чем круче программист, тем быстрее у него получается.

Решение

Бессонные ночи и тонны прочитанной литературы помогли найти решение как писать "чисто". Не важно - что-то новое или рефакторинг старого.

Появилась другая проблема - это решение очень сложно донести до коллег. Только начинаешь - и сразу вопросы "А зачем?" "Работает же" и так далее.

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

Писать "чисто" очень просто. Начинаешь с важного, а потом детализируешь.

Поехали

Чтобы больше не объяснять, буду показывать на примере очередного приложения для микроблогинга. От начала до конца, от важного, к деталям. Писать буду на Python.

Мне кажется, что самое важное - это данные, с них и начнем.

from typing import NewType

CustomerId = NewType("CustomerId", str)
PostId = NewType("PostText", str)
PostText = NewType("PostText", str)

class Post:
    id: PostId
    text: PostText

class Customer:
    id: CustomerId
    posts: [Post]

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

Следующая серия

З.Ы. Если вы не хотите ждать, а желаете сразу посмотреть как любимый PostgreSQL подключается последним коммитом, можете посмотреть на приложение, написанное мною на Clojure. Начните с README.

Архитектурная ошибка там, на мой взгляд, только одна и ее не сложно исправить. Можем обсудить.

<2023-01-19 Thu>

Author: Nikita Mistiukov <me@nekifirus.com>

Created: 2023-02-16 Thu 22:04

Validate