如何不跨项目和/或语言重复自己

时间:2008-09-22 07:53:48

标签: dry maintainability

我正在研究不同编程语言中的几个不同但相关的项目。其中一些项目需要解析其他项目编写的文件名,并期望某种文件名模式。

现在,这种模式在几个地方以多种语言进行了硬编码,使其成为维护炸弹。在给定项目中定义此模式非常容易一次,但是对于所有项目和所有正在使用的语言,一次又一次地定义它的技术是什么?

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我将模式存储在一个简单的文本文件中,具体取决于特定的项目:

  • 在构建时将其嵌入源中(预处理)
  • 如果以上不是选项,请将其视为在运行时读取的配置文件

编辑:我认为这个模式并不比正则表达式更复杂,否则我会从另一个答案开始使用DSL解决方案。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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