В основе любой информационной системы лежат 3 основные понятия:
роутинг
рендеринг
операции
Общие принципы:
Чем проще задача тем проще должно быть ее решение
Чем чаще выполняется задача тем единообразней и проще должны быть алгоритмы ее решения
Вся система должна работать так чтобы мы могли проследить всю цепочку вызовов и интерпретировать ее в любом месте системы
Начнем с роутинга:
Для того, чтобы система была хорошо тестируема, легко редактировалась и управлялась необходимо наличие нескольких условий:
1. Единая точка входа (любые запросы проверяемы, управляемы и регулируемы)
2. Распределенная система (система с единой концепцией создания, но независмыми друг от друга, даже изолированными при стандартном сценарии элементами)
Система должна быть легко расширяема и легко изменяема в части самих элементов этой системы, но не ее логики (первый общий принцип)
3. Система запросов должна быть прозрачна и легко тестируема
Переходим к операциям:
1. Операции должны быть удобны пользователю (менеджеру, посетителю сайта, админу и тд)
То есть логика работы должна быть понятна и проста конкретно для группы пользователей
2. общие операции на уровне выполнения должны быть разделены по правам, логике работы и т.д.
3. Не зависимо от того насколько логика выполнения какой то операции разная у разных систем пользователей результат должен быть одимнаков
4. Чем глубже уровень тем адаптивнее операции под разработчика.
На самом базовом уровне должны быть технические детали (база данных, rest-api, работа с файлами и тд)
На более верхнем уровне абстракции для следующей группы, например для менеджеров
И на еще более верхнем уровне абстракции на уровне бизнеса (бизнес логика)
5. Все соответствия самого верхнего уровня и самого нижнего должны проходить через маппинг, эти системы всегда связаны и зависимы друг от друга,
Как раз способ интерпретации маппинга как системы настроек и зависит насколько быстро и хорошо будут выполняться требования бизнеса.
Далее рендеринг:
1. Система рендеринга должна быть распределена (для одной логики множество представлений)
2. Система рендеринга должна быть легко управляема (ограничения прав, редиректы и тд)
3. Представление не должно содержать никакой логики, только декларации
4. Общик контракты деклараций должны идти от бизнес ->клиент->менеджер->разработчик
То есть бизнес проверяет через маркетолога пользу фичи для клиента, далее проверяет понятность удобства работы с для менеджера и далее передает программисту
5. Вся логика от представления должна быть выделена под работу с каждой сущностью не зависимо от представления (общие точки входа, разделение только по операциям и назначению, сначала по назначению:опреации менеджера, затем по типу CRUD, помним про принципы работы с операциями)