7.6 Обсуждение

Предыдущая  Содержание  Следующая V*D*V

Object демонстрирует то, что является одновременно силой и слабостью нашей техники: у нас есть выбор где реализовывать наши решения. Код может быть размещён в описании или реализации класса, он может быть превращён в отчет, или может быть похоронен где-то в программе awk.

Очевидно, что мы должны быть очень осторожными с последним вариантом: ooc предназначен для использования в более, чем одном проекте; таким образом, программа awk должна быть свободна от какого-либо врождённого знания о проекте. Позволено собирать информацию и предлагать её для замены, и требовать подключения операторов препроцессора в отчёты, но это не должно предполагать ничего о содержании отчёта или упорядочивании.

Отчёты могут изменятся между проектами и они являются местом для соблюдения стандартов кодирования. Отчёты и все другие файлы, такие как описания классов и реализаций ищутся в каталогах, указанных в качестве переменной окружения OOCPATH. Это может быть использовано для загрузки разных версий отчетов для разных проектов.

Наш подход к Object демонстрирует гибкость замены отчётов: мы можем разделить общий код отчёта вызывая отчёты в общих файлах и можем избежать накладных расходов в большинстве обработок на проверку частного случая. В то время как код один-в-своём-роде  может быть записан в файл реализации, его почти так же легко записать в виде отчёта, чтобы можно было извлечь выгоду из генерации отчетов. Дублирование кода едва ли оправдано.

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

Однако, генерация отчётов занимает больше времени выполнения, чем простые вызовы функций. Препроцессор должны сгенерировать штампы #line для компилятора C таким образом, чтобы сообщения об ошибках относились к строкам первоисточника. Существует положение о генерации штампов #line в ooc, но с генерацией отчётов в штампах #line всё не так хорошо, как, возможно, могло бы быть. Может быть, когда наши отчёты станут стабильными, можно было бы написать другой препроцессор для генерации программы awk из отчётов?

 

Предыдущая  Содержание  Следующая