有一個類通過每個表有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#類,你有沒有考慮過屬性? –