データベースのストアド プロシージャへのプログラム インターフェイスを提供するコードの一部をリファクタリングしようとしています。ただし、いくつかの異なる構成で同じことを行う可能性のある数百の関数を作成しなければならない立場にいることに気づきました。
- 関数が使用するストアド プロシージャ
- 特定のストアド プロシージャの引数と検証パラメーターを提供する構成オブジェクトへのマッピング
例として:
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)
}
当然、これはあまり DRY とは感じられず、これらがたくさんあると問題になります。
このケースを処理できるさまざまな方法と、「ベスト プラクティス」とは何かについて興味があります。
1 つの大きな構成と、指定された文字列パラメーターが適切なストアド プロシージャとその構成を取得するディレクター関数を持つことを考えました。例:
get('countries', params)
しかし、場合によっては文字列が少し恣意的に見えるかもしれないので、これについてはよくわかりません。
私が考えたもう 1 つのことは、実行時に関数を自動生成するだけの巨大な構成を 1 つ持つことでした。これはより好ましいように思えますが、現在の実装よりも DRY に準拠しているように見えますが、維持するのが面倒な可能性のある非常に大きなファイルにまだ悩まされています。
考え?注目すべき特定の設計パターンはありますか?