我有兩個圖形對象(說某種Table
s),我想設置它們的樣式。瑣碎代碼如下:(真正的代碼有更多行)對同一類型的多個對象執行大量操作
table1.BorderWidth = 2;
table1.BorderColor = Color.GloriousPink;
table2.BorderWidth = 2;
table2.BorderColor = Color.GloriousPink;
更巧妙的方式,使用的方法。
void Format Table(int tableIndex)
{
Table table;
if(tableIndex == 1)
table = table1;
if(tableIndex == 2)
table = table2;
table.BorderWidth = 2;
table.BorderColor = Color.GloriousPink;
}
我想了一個辦法,使之更具可擴展性(在if
/switch
部分生長快),我想出了:
foreach(Table table in new List<Table> { table1, table2 })
{
table.BorderWidth = 2;
table.BorderColor = Color.GloriousPink;
}
這是短,任何潛在的額外表是很簡單。它有什麼缺點嗎?
這就是它。重複的代碼和多個'if'語句是一種常見的代碼異味。 – Groo 2013-03-27 14:20:20
你的第二種方法可能有點聰明。而不是接受一個'int tableIndex'作爲參數,你可以改用'Table table'。 'void FormatTable(Table table)'。這樣你就不需要'if',你的代碼變得更短,更容易閱讀。 – Nolonar 2013-03-27 14:25:06
您也可以考慮將列表作爲父類的私有字段,其中包含所有表(以避免在您要將操作應用於所有表時必須重新創建列表)。 – Groo 2013-03-27 14:34:29