我的工作在几个不同但相关的项目在不同的编程语言。其中一些项目需要分析文件的书面通过的其他项目,并期望某一文件模式。

这个模式现在是硬编码在几个地方,并以几种语言,使它成为一个维护炸弹。这是相当容易界定这个模式正是曾经在一个特定项目,但什么是技术用于确定一次并对所有对所有的项目和所有语文在使用?

有帮助吗?

解决方案

创建特定于域的语言,然后将其编译为您正在使用的每种目标语言的代码将是最佳解决方案(并且最优雅)。

制作DSL并不困难 - 将它嵌入到某些东西中(比如Ruby内部,因为它现在是'in'的东西,或者像LISP / Haskell这样的其他语言......),或者从头开始创建语法(使用ANTLR的?)。看起来项目很大,那么这条路是值得的。

其他提示

我的商店模式,在一个简单文本的文件,取决于一个特定的项目:

  • 把它嵌入来源,在建立时间(预处理)
  • 如果上述不是一个选项,把它作为一个config文件阅读在运行时

编辑:我假设的模式是什么没有更复杂的比regex,否则我会去的DSL解决方案,从另一个答案。

您可以使用通用脚本,流程或Web服务生成文件名(取决于您的设置)。

我不知道您说的是哪种语言,但大多数语言都可以使用外部动态库dll /共享对象,并从此库中导出常用功能。 例如,您在简单的c lib中实现函数get文件名,并使用acrros其余的语言 另一种选择是动态创建公共代码,作为每种语言的构建过程的一部分,这不应该是复杂的 我建议使用动态链接方法,如果可行的话(你没有提供足够的信息来确定这一点),因为维护这个解决方案比维护不同语言的代码要容易得多。

将模式放在数据库中 - 最简单,最舒适的方法是使用XML数据库。所有项目都可以访问该数据库,他们将从那里读取模式

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top