Автоматическая генерация архитектуры ПО.
От: Chrome  
Дата: 26.07.11 11:33
Оценка: 8 (3) +1 :))) :))
Вопрос такой – не является ли придумывание и фиксация
Архитектуры приложения – разновидностью преждевременной оптимизации?

Тезисы такие.

Существует процедура рефакторинга.

Довольно монстрообразные программы при помощи последовательного применения довольно очевидных рефакторингов приводятся к благообразному виду.

С дргугой стороны, как правило, задуманная первоначально структура программы со временем размывается и довольно быстро перестает быть актуальной.

Напрашивается мысль, что рефакторинги можно было бы применять автоматически при комитах изменений.

Искать повторно используемый код – выделять функции и переменные.
Инлайнить функции и переменные.
Группировать функции с данными, с которыми они наиболее плотно используются.
Превращать аргументы функций в члены классов и обратно.
Ну и множество других довольно тупых действий.
При этом считать различные метрики графа кода и добиваться их оптимизации.

Еще раз повторюсь, в каждом шаге рефакторинга ничего особо интеллектуального нет, можно и машину научить его применять, а вот результаты систематического применения дают весьма сносный и логичный код.

Напрашивается аналогия с алгоритмом балансируемого дерева.
Вы добавляете элементы к дереву, они встраиваются в соответствующие узлы.
Когда большое число новых элементов нарушает баланс дерева, оно автоматически перестраивается.
Предлагается то же самое для дерева кода программы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.