对具有多个相关项目的组织进行编码


Code Organization with Multiple Related Projects

我正在使用WordPress进行一个网站项目,该项目需要一些自定义插件。我想保持插件模块化,但其中一些插件需要类似的功能。因此,我发现自己的目标相互矛盾:

  • 使每个插件独立且模块化
  • 不要重复代码

例如,我需要两个不同的插件来输出基于术语列表和一些参数的<select>元素。我写了一个函数来实现这一点,但我应该在两个插件中复制这个函数吗?这看起来像是一场维护噩梦,但如果我不这样做,一个插件将以一种相当武断的方式依赖于另一个插件。有没有什么聪明的解决方案可以解决我所缺少的问题?

考虑重复的代码。特别要考虑函数的数量及其长度。如果两个插件只共享几个格式化方法,那么为了保持插件的自包含性而复制代码就没什么大不了的了。

如果重复的代码越来越重,请开始考虑执行以下操作之一:

  1. 将这些插件合并为一个插件。只有当这两个插件适用于同一个问题空间时,才能执行此操作。仔细看一下插件。有一种可能性是,以前让他们看起来分离的是虚幻的,基本行为是密切相关的。

  2. 将重复的代码提取到第三个插件中,该插件是共享代码的每个插件的依赖项。只有当重复的代码是相关的并且作为插件是有意义的时,才这样做。