我希望重构一段代码,为数据库的存储过程提供编程接口。然而,我发现自己不得不创建数百个功能,这些功能用几个不同的配置来做同样的事情。
- 函数使用的存储过程
- 映射到为特定存储过程提供参数和验证参数的配置对象
举个例子:
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。
想法?有什么特别的设计模式我应该看看吗?