1

我希望重构一段代码,为数据库的存储过程提供编程接口。然而,我发现自己不得不创建数百个功能,这些功能用几个不同的配置来做同样的事情。

  1. 函数使用的存储过程
  2. 映射到为特定存储过程提供参数和验证参数的配置对象

举个例子:

getCountries = function(params){
   var options = { statement : 'proc_1'}
   return run_request(options, params, mappings.select.countries)
}

getStates = function(params){
   var options = { statement : 'proc_2'}
   return run_request(options, params, mappings.select.states)
}

自然,这不会感觉很干燥,并且当有很多这些时会出现问题。

我很好奇我可以处理这种情况的不同方式,以及“最佳实践”是什么。

我想过拥有一个大型配置和一个导向器函数,给定字符串参数将获得正确的存储过程及其配置。例如:

get('countries', params)

但我不确定这一点,因为在某些情况下字符串可能看起来有点随意。

我想到的另一件事是有一个巨大的配置,它只是在运行时自动生成函数。这似乎更可取,但我仍然坚持一个可能很难维护的非常大的文件,尽管它似乎比我目前的实现更好地遵循 DRY。

想法?有什么特别的设计模式我应该看看吗?

4

1 回答 1

1

不要将形式与功能混淆。

您有两个具有相同“形状”但执行不同功能的代码示例。没关系。DRY 是关于不多次执行相同的功能(并且不可避免地以多种方式执行)。

于 2013-05-07T01:50:57.260 回答