我正在寻找重构一段代码,该代码为数据库的存储过程提供编程接口。但是,我发现自己必须创建潜在的数百个功能,这些功能可以通过一些不同的配置来完成同样的工作。
举个例子:
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。
思考?我应该看一下特定的设计模式吗?
答案 0 :(得分:1)
不要将形式与功能混淆。
您有两个具有相同“形状”的代码示例,但它们执行不同的功能。没关系。 DRY多次没有做同样的功能(并且,不可避免地,多种方式)。