减少许多模块中重复代码的策略

时间:2015-01-17 12:28:06

标签: ruby-on-rails ruby refactoring code-duplication

情况

所以我以模块的形式创建了一些代码,每个代码都代表一份医疗问卷(我称之为Catalog s)。每个不同的调查问卷都有自己的模块,因为它们的内容和相关计算可能略有不同,但基本上由具有布尔/数字可能响应的简单问题组成。这是一个例子:

http://www.janssenmedicalinformation.ca/assets/pdf/HarveyBradshaw_English.pdf

这些Catalog模块包含在Entry类中,用于收集与问题名称匹配的响应。每个调查问卷都转换为DEFINITIONEntry用于执行以下操作:

  • 验证输入
  • 检查完整性
  • 计算得分

以下是2个参考示例,用于说明重复问题......大部分代码都相似但完全相同。

https://gist.github.com/theworkerant/3a074d5d2a642ded1b96

问题

这里有很多重复,但我不确定删除它的最佳策略。有一些事情使这个特定问题变得困难,并使我倾向于接受一些重复,而不是一个过于严格的工作系统。系统需要保持足够的灵活性,以容纳目前未知的类似性质的医疗问卷,所以我需要小心(我之前已经使用Module系统的原因)

以下是一些例子:

  • 每个Catalog可以有不同的评分要求和自定义的问题分组,代表一个"得分"
  • Catalog课程中可能包含EntryCatalog个,并且无法相互衔接
  • 有些sum包含类似"当前体重"对于计算,打破1-5或1-10范式并且不能很好地适应简单的Catalog缩减。
  • 一个{{1}}需要一周的先前条目才能生效,这是一种奇怪的自定义验证。

问题:

此处可采用哪些策略来减少重复?我不是在寻找从这些具体例子中删除几行的调整。实施成本是一个考虑因素。

的可能性:

  • 将其中的一部分放入数据库(听起来不错,但我认为实施成本可能很高)。
  • 我担心我的元编程可能会有改进的空间,或许有更好的方法可以通过动态方法创建或其他巫术来实现这一点。

谢谢!

0 个答案:

没有答案