[問題] 實作內容相同但很可能改變的function

作者: BigLoser (大魯蛇)   2014-08-20 16:03:00
大家好,我就直接舉例了
public int CountA(int A)
{
return A*5 + 0;
}
public int CountB(int B)
{
return B*5 +1;
}
public int CountC(int C)
{
return C*5 +2;
}
我有多個function做的事情是差不多的,只有些微差別,
如例子中的 +0 +1 +2,
所以我可以把它整合成一個function,用switch來判斷他要+多少,
可是問題來了,如果未來這些function可能又會出一些特別的變化,
例如
public int CountA(int A)
{
return A*A*A+A+1;
}
會使得A不適合跟其他人整合成在一起,
請問這種狀況該怎麼處理比較好呢?
謝謝
作者: uranusjr (←這人是超級笨蛋)   2014-08-20 16:28:00
請用繼承, 不要用 switch
作者: iterator (rotareti)   2014-08-20 16:35:00
應該把 method 中類似的東西抽出, 成為獨立的 method視這些所謂"差不多,但不同"的片段, 彼此間的關係去決定要用 switch, Func<>, 或根本不該綁在一起不同類的東西,硬要塞個switch,只會造成程式邏輯混亂可以從這個方面去想:你要做的事情符不符合method名字?method的名字是否足以描述裡面要做的事情.
作者: ssccg (23)   2014-08-20 20:31:00
要不要合併不是只看實作內容,要看代表的邏輯和用途你的舉例來說,你後面的問題來了根本不是個問題作法改了當然就呼叫新的function,跟原本的關係在哪?
作者: BigLoser (大魯蛇)   2014-08-20 21:06:00
公式大部分是共用的 只有一小部分不同*相同

Links booklink

Contact Us: admin [ a t ] ucptt.com