Как не повторить себя в разных проектах и ​​/ или языках - PullRequest
1 голос
/ 22 сентября 2008

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

Этот шаблон теперь жестко запрограммирован в нескольких местах и ​​на нескольких языках, что делает его вспомогательной бомбой. Довольно легко определить этот шаблон ровно один раз в данном проекте, но каковы методы его определения раз и навсегда для всех проектов и для всех используемых языков?

Ответы [ 5 ]

1 голос
/ 22 сентября 2008

Я не знаю, о каких языках вы говорите, но большинство языков могут использовать внешние динамические библиотеки dll / shared-объекты и экспортировать общие функции из этой библиотеки. Например, вы реализуете функцию get name в простом c lib и используете acrros остальные языки.
Другим вариантом будет динамическое создание общего кода как часть процесса сборки для каждого языка, который не должен быть сложным.
Я предложу использовать подход с динамическими ссылками, если это возможно (вы не дали достаточно информации, чтобы определить это), поскольку поддерживать это решение будет намного проще, чем поддерживать генерацию кода для разных языков.

1 голос
/ 22 сентября 2008

Вы можете использовать общий сценарий, процесс или веб-сервис для генерации имен файлов (в зависимости от настроек).

1 голос
/ 22 сентября 2008

Создание предметно-ориентированного языка, а затем скомпилирование его в код для каждого целевого языка, который вы используете, будет лучшим решением (и наиболее элегантным).

Нетрудно создать DSL - засушить его во что-нибудь (например, внутри Ruby, так как это прямо сейчас "in", или на другом языке, таком как LISP / Haskell ...), или создать грамматику с нуля (используйте Antlr?). Кажется, что проект большой, тогда этот путь стоит вашего времени.

1 голос
/ 22 сентября 2008

Я бы сохранил шаблон в простом текстовом файле и, в зависимости от конкретного проекта:

  • Вставить его в исходный код во время сборки (предварительная обработка)
  • Если вышеупомянутое не вариант, обрабатывайте его как файл конфигурации, прочитанный во время выполнения

Редактировать: я предполагаю, что шаблон не более сложен, чем регулярное выражение, иначе я бы пошел с решением DSL из другого ответа.

0 голосов
/ 22 сентября 2008

Поместите шаблон в базу данных - самый простой и удобный способ - использовать базу данных XML. Эта база данных будет доступна всем проектам, и они будут читать оттуда шаблон

...