Предисловие
За всё время работы программистом, я сталкивался с различными задачами по доработке сайтов. И отметил одно: функций много, по разных файлам разбросанно, общей картины пространства имён не видно, где то (например в yii) нужно ещё инициировать проект, чтобы через phpmyadmin увидеть актуальные таблицы… я не говорю уже о контроле созданного проекта, который не централизован вовсе (if,elseif где попало). А перевод на git технологии перевёл код на уровень: построили из того что было под рукой.
Не желавши такого, совсем, тянувшись к геометрии и балансу, я начал восстанавливать исконный подход к программированию, да так, чтобы можно было легко сдать сайт другому программисту на доработку, со всем необходимым.
Зона абы как
PHP-коды по методу «ООП на классах» я выявил как некие зависания в каких то (не ясных) этапах разработок. Раздрай какой то:
- Нет целей проекта и описаний
- Неструктурированно пространство имён
- Неструктурированны файлы
- Уравнивание разных по назначению алгоритмов
Свобода – это осознанная необходимость
Я утвердил что мой подход к программированию станет дисциплинированным и свободным. Не легко было, но я справился, и выявил 4-е важных компонента построения проекта (как для ядра, так и для интерфейса), которые полностью соответствовали моему устремлению:
- Conditions, где создаются права проекта
- Space, где создаются роли проекта
- Distribution, где создаются возможности проекта
- Realization, где создаются способности проекта
Зафиксируем эту аббревиатуру как CSDR.
Архитектура проекта на CSDR
Согласование
Первое, что нужно учесть: мы создаём проект (ядро или интерфейс). Второе: проект должен быть целостным. Думаю, как и я, вы посчитали эти условия разумными.
Проектирование
Далее из этого вытекает, что дальше речь будет о компонентах проекта, а по моим расчётам (и подсказкам таки еврейских братьев) наш мир 4-х-мерный: прошлое (наша опора), будущее (наша среда), объединяющее (таки да, торговля и подарки важны) и настоящее (наши дела). Основавшись на таких знаниях, и признав, что лучшего программирования согласованного с ходом нашего времени не найти, я спроектировал такие имена компонентов для создания проекта: Conditions, Space, Distribution и Realization.
Сделаю небольшой перевод аббревиатуры CSDR, для дальнейшего удобства изъяснений. Итак:
- Conditions, где создаются права проекта -> Рефлексы
- Space, где создаются роли проекта -> Места
- Distribution, где создаются возможности проекта -> Связи
- Realization, где создаются способности проекта -> Реакции
Объект
Связи предоставят реакциям (алгоритмам) все значения с необходимых мест (с типом переменная).
Проект
Когда же из компонентов начал создавать 4-х-мерный проект, то заметил, что рефлексы и места из за своих особенностей (необходимости вложенности) должны выстраиваться гомоархически (в субъекты), а вот связи и реакции гетерархично (в объекты) по причине завязки на места.
Параметры
Для рефлексов определены такие параметры:
- Ориентир, где идёт обозначение рефлекса
- Условия, где код условия («if»)
- Расчёты, где идёт описание рефлекса
- Места, где перечисляются id мест для активации
- Вложение, подкатегории рефлексов
Для мест определены такие параметры:
- Смысл, где идёт обозначение места
- Тип, где идёт назначение места
- Связи, где перечисляются id связей для активации
- Вложение, подкатегории мест / значение
Для связей определены такие параметры:
- Импорт вложений с мест, где перечисляются id мест (с типом переменная)
- Экспорт вложений в места, где перечисляются id мест (с типом переменная)
- Пример импорта вложений с мест
- Пример экспорта вложений в места
- Реакция, где перечисляются id реакций для активации
Для реакций определены такие параметры:
1. Функция, где алгоритм
Цикл
Далее я установил необходимую последовательность активации компонентов (последовательный цикл):
- Реакции активируют рефлексы
- Рефлексы активируют места
- На местах активируются связи
- Связи активируют реакции
Итогом получился замкнутый на себя проект, вмещая в себя все необходимые и важные по своей функциональности компоненты, обеспечивающие адекватную реакцию на внешнее событие (запрос).
Пример
Эскиз примера (стрелки обозначают влияние / активацию):
Далее по теме: Трансформер-интерфейс на JS посредством CSDR.
Автор: Белояръ