
DAO vs Repository и ORM: где заканчивается архитектура и начинается хаос
MULTIFACTOR_company 12 минут назад DAO vs Repository и ORM: где заканчивается архитектура и начинается хаос Простой 15 мин 564 Блог компании МУЛЬТИФАКТОР Анализ и проектирование систем * ООП * Программирование * Python...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: MULTIFACTOR_company 12 минут назад DAO vs Repository и ORM: где заканчивается архитектура и начинается хаос Простой 15 мин 564 Блог компании МУЛЬТИФАКТОР Анализ и проектирование систем * ООП * Программирование * Python * Всем привет! Я Дмитрий Милов, Python-разработчик компании МУЛЬТИФАКТОР в команде продукта MULTIDIRECTORY, мы разрабатываем собственную службу каталогов. Как это обычно бывает в процессе развития продукта, код постепенно перестает помещаться в привычные рамки.
Мы начали обсуждать, какое архитектурное решение лучше подходит нашей системе. Спор об определениях затянулся: у каждого были аргументы, почему одно решение лучше подходит чем другое. Есть множество гайдов по архитектуре ПО, паттернам, слоям.
Технические детали
Рано или поздно, сталкиваясь с DAO и Repository, начинаешь задаваться вопросом: а как правильно? Как оно должно выглядеть в теории и как лучше реализовать на практике? Одни и те же термины где-то могут быть ближе к строгим определениям, а где-то — к практике.
Я захотел понять не только в чём разница между этими паттернами, но и почему продолжается путаница в концепциях, которые давно описаны и формализованы. Слева DAO, справа Repository. Без паттернов: до 2000-хКогда-то код для работы с данными был размазан по всей бизнес-логике, и это считалось нормой.
javaПоследовательность действий могла выглядеть так:с помощью драйвера подключиться к БД;написать SQL запрос;выполнить запрос;поработать с данными: получить, присвоить, сравнить, посчитать;залогировать;закрыть соединение. И всё это в одном слое. Вместо БД и SQL запроса можно представить обращение к внешнему сервису по HTTP, получение от него JSON данных, их обработку.
Отраслевые последствия
Или работу с файлом: чтение, парсинг. Зачем нужны паттерныПаттерны мы используем, чтобы эффективно решать типовые архитектурные задачи. С помощью паттернов мы выстраиваем ясный дизайн всего приложения.
Дизайн позволяет фрагментировать сложность, управлять ею. Хотя сама сложность никуда не исчезает, она просто скрывается от беглого взгляда. Главное, мы избавляемся от хаоса в коде.
Принцип “разделяй и властвуй” работает и в программировании. Из физики: сумма двух энтропий меньше, чем энтропия суммы. “связность” и “связанность”В программировании понятия “связность” и “связанность” используют для оценки уровня декомпозиции, качества дизайна кода, архитектуры в целом.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




