.
В продолжение сегодняшнего поста (теперь доступен только избранным:), даю там 4 простых шага, как вы можете тренироваться в теме проектирования самостоятельно, при этом не тратя месяцы и годы на изучение тяжёлых методологий наподобие DDD.
Я экспериментировал где-то 20-30 часов с моей новой методикой "как обучать формальному проектированию просто как готовой пошаговой технологии, чтобы человек с небольшим опытом мог создавать системы с полного нуля не на 20 классов, а на 20,000 классов, сохраняя сложность проекта линейной". Ключевая идея, что у нас есть 5-7 гибридных паттернов (повыше уровень абстракции, чем классические 23 GoF паттерна), для каждого из которых задано предусловие - когда тот или иной паттерн надо просто "тупо" применять, и как именно это делать. Ну например это "инвертированный" Visitor, который я вчера выложил для ментатов в СильныеИдеи (если угодно, это версия Double Dispatch с Action Interface).
И вот что я должен сказать по итогу: да, в результате действительно получается использовать эти паттерны так, что сложность проекта остаётся линейной: практически любую новую фичу мы добавляем за O(1), максимум за O(log N). Но при этом во-первых нужен приличный скилл и опыт применения паттернов (хотя бы классических), приличный порог вхождения, во-вторых сама архитектура быстро становится весьма громоздкой (очереди, синхронные шины приходится внедрять практически с самого начала) и тяжеловатой для понимания, если брать уровень среднего миддла, и в-третьих AI в этом вообще ничего не понимает, тупит и плавает, а так как многие моменты уже неформальны, вообще непонятно, стоит ли его рекомендациям доверять или нет.
Это была моя мета-ошибка: мне надо было сразу начинать с того факта, что ООП -- это полный sucks 💩
Я плюнул на это всё, и за полчаса начисто зафигачил с нуля тот же самый учебный проект в функциональном стиле 💥 При этом и AI классно помогал, так как все функции чистые, а он в алгоритмических задачках реально хорош. Ну и TDD на ФП ложится вообще идеально, плюс ещё куча других плюсов.
В общем, буду дальше учить проектированию только в функциональном стиле, это же чистая математика ❤️ и постепенно к моей модели сохранения линейной сложности в дополнение к тем десяткам паттернов, что даю на первом курсе по функциональному программированию, соответственно добавлю несколько ключевых секретных гибридных паттернов, и плавно буду подключать абстракции из гомотопической теории типов.
Тут вообще всё элементарно, куда проще чем классы, вот смотрите: HOFs как экспоненциалы, свободные композиции при совпадении доменов-кодоменов, финальные ко-алгебры для описания индуктивных рекурсивных типов, ограниченные типом функции (поведения в поведениях), монадические трансформеры, категорные классы как паттерны декомпозиции, и прочая попса 😇
Ну а те десятки часов, которые я потратил на эксперименты с ООП, в принципе тоже не пропадут: я просто в СильныеИдеи добавлю отдельный материал с теми гибридными паттернами.
Post #1949
906

- ❤ 48
- 🔥 7
- 👍 4
- 👌 2