7.6 Обсуждение |
Предыдущая Содержание Следующая |
Object демонстрирует то, что является одновременно силой и слабостью нашей техники: у нас есть выбор где реализовывать наши решения. Код может быть размещён в описании или реализации класса, он может быть превращён в отчет, или может быть похоронен где-то в программе awk. Очевидно, что мы должны быть очень осторожными с последним вариантом: ooc предназначен для использования в более, чем одном проекте; таким образом, программа awk должна быть свободна от какого-либо врождённого знания о проекте. Позволено собирать информацию и предлагать её для замены, и требовать подключения операторов препроцессора в отчёты, но это не должно предполагать ничего о содержании отчёта или упорядочивании. Отчёты могут изменятся между проектами и они являются местом для соблюдения стандартов кодирования. Отчёты и все другие файлы, такие как описания классов и реализаций ищутся в каталогах, указанных в качестве переменной окружения OOCPATH. Это может быть использовано для загрузки разных версий отчетов для разных проектов. Наш подход к Object демонстрирует гибкость замены отчётов: мы можем разделить общий код отчёта вызывая отчёты в общих файлах и можем избежать накладных расходов в большинстве обработок на проверку частного случая. В то время как код один-в-своём-роде может быть записан в файл реализации, его почти так же легко записать в виде отчёта, чтобы можно было извлечь выгоду из генерации отчетов. Дублирование кода едва ли оправдано. В целом, формирование отчёта имеет свои преимущества и недостатки. Преимущества — упрощение разработки иерархии классов и изменений при поддержке, так как отчёты это одно, центральное место обеспечения соблюдения стандартов кодирования. Если, например, мы захотим отслеживать вызовы селекторов, то просто вставим строку трассировки в тело селектора в файле отчётов и трассировка будет сгенерирована везде. Однако, генерация отчётов занимает больше времени выполнения, чем простые вызовы функций. Препроцессор должны сгенерировать штампы #line для компилятора C таким образом, чтобы сообщения об ошибках относились к строкам первоисточника. Существует положение о генерации штампов #line в ooc, но с генерацией отчётов в штампах #line всё не так хорошо, как, возможно, могло бы быть. Может быть, когда наши отчёты станут стабильными, можно было бы написать другой препроцессор для генерации программы awk из отчётов?
|
Предыдущая Содержание Следующая |