Содержание
Что в итоге?
Для анализа возможностей расширения программы в случае копирования всех файлов для нового шага в отдельны проект достаточно было просто сравнить каталоги с исходными текстами. Например, используя diff. Заимствование файлов из разных проектов несколько затрудняет сравнение, хотя и позволяет посмотреть на повторное использование кода несколько с другой стороны. В результате сделана попытка сформировать таблицы, демонстрирующие развитие кода для каждой из трех рассмотренных парадигм. Строки отображают шаги и созданные файлы , а в столбцах показаны переходы между шагами, от которых осуществляется расширение, к шагам, определяющим разновидность расширения.
Цветовая раскраска клеток намекает на различные статусы файлов, разработанных в ходе рассмотренных восьми шагов.
Зеленым цветом отмечен файл, который на данном шаге создается впервые.
Желтый цвет в соответствующей колонке, определяющей шаг, показывает, что данный файл используется без изменений.
Темно-красный цвет указыват на то, что этот файл на текущем шаге изменяется на другой, имеющий то же имя и отмеченный розовым цветом в строке соответствующего шага.
Аналогично темно-фиолетовым цветом отмечен файл с главной функцией, имитирующей клиента, который может меняться или не меняться в зависимости от расширения.
Процедурный подход
Таблица, представленная для процедурного подхода показывает, что множество изменений происходит при расширении альтернатив. В этом случае приходится изменять всех обработчиков этих альтернатив. То есть, меняются как заголовочные файлы, так и реализация функций, осуществляющих обработку измененных альтернатив. Добавление функциональности происходит практически безболезненно.
Объектно-ориентированный подход
В случае ООП основные изменения связаны с интерфейсами. Это ведет к достаточно частым изменениям объявлений классов. Если для классов возможна реализация методов в отдельных единицах компиляции, то они могут оставаться неизменными и использоваться в других проектах. Изменчивость интерфейсов в ООП ведет к тому, что повторное использование реализации метода в другом проекте может конфликтовать с более ранним объявлением интерфейса, который в новом проекте изменился. По умолчанию метод использует интерфейс, который в поиске появляется первым. Поэтому в ОО программах описание заголовочных файлов вынесено отдельно и их подключение осуществляется явным заданием местоположения в CMake.
Процедурно-параметрический подход
Процедурно-параметрический подход практически для всех рассмотренных ситуаций обеспечивает поддержку безболезненного расширения программ. Все ранее созданные заголовочные файлы используются без изменений, а файлы, описывающие реализацию функций подключаются к следующему шагу по мере необходимости. Ихменение отмечено только для клиентского кода, что обуславливается использованием внутри него добавляемой в программу новой функциональности.
Содержание
|