テーブルごとに1 string[]
の変数を持つことによって、さまざまなテーブルの主キーを定義するクラスがあります。たとえば:このリファクタリングには何か利点はありますか?
static string[] my_table_foo_TablePrimaryKeys = new string[] { "primary_key1", "primary_key2" }
static string[] my_table_bar_TablePrimaryKeys = new string[] { "user_id", "customer_number" }
私は、これは少し厄介と私たちは、後で第三のテーブルを追加する場合にはあまり拡張可能であることがわかり、私たちはその新しい第三表の主キーを定義するために戻って、このクラスに来てほしいです。だから、私は次のようにそれをリファクタリングしました:
static Dictionary<string, string[]> tablePrimaryKeys = new Dictionary<string, string[]>()
{
{"my_table_foo", new string[] { "primary_key1", "primary_key2" }},
{"my_table_bar", new string[] { "user_id", "customer_number" }}
};
これはまともなリファクタリングの変更だと思いますか?どうして?
また、プライマリキーが参照される私の謙虚な意見では、少し洗っています。例:
DoStuffWithPrimaryKeys(my_table_foo_TablePrimaryKeys, "other stuff", 1000);
後者の場合:前者の場合には
string[] keys = tablePrimaryKeys["my_table_foo"];
DoStuffWithPrimaryKeys(keys, "other stuff", 1000);
誰も原則は「許容リファクタリング」と方法を知っているためであるかを言及したい場合リファクタントに受け入れられるものとそうでないものは、素晴らしいものであり、非常に教育的です。
私はC#と.NET 3.5を使用しています。
'my_table_foo'がデータベースにのみ存在する場合、データベースには関係ありませんか? 'my_table_foo'に一致するC#クラスがある場合、属性を考慮しましたか? –