看板 C_Sharp 關於我們 聯絡資訊
大家好,我就直接舉例了 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不適合跟其他人整合成在一起, 請問這種狀況該怎麼處理比較好呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.104.106 ※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1408521782.A.36A.html
uranusjr: 請用繼承, 不要用 switch 08/20 16:28
原本想用繼承,可是這些計算公式,是只有當中有一些不同, EX 計算公式1.. 計算公式專屬a的部分 計算公式2.. 專屬部分在每個狀況會有不同, 可是現在就算我計算公式1和2當讓大家共用, 又遇到另一個問題,就是未來a的計算公式1可能會變的不同, 這樣共用的部分就不行了,等於要獨立抽出來, 這種情況又該如何呢?
iterator: 應該把 method 中類似的東西抽出, 成為獨立的 method 08/20 16:35
iterator: 視這些所謂"差不多,但不同"的片段, 彼此間的關係 08/20 16:36
iterator: 去決定要用 switch, Func<>, 或根本不該綁在一起 08/20 16:39
iterator: 不同類的東西,硬要塞個switch,只會造成程式邏輯混亂 08/20 16:40
iterator: 可以從這個方面去想:你要做的事情符不符合method名字? 08/20 16:41
iterator: method的名字是否足以描述裡面要做的事情. 08/20 16:41
※ 編輯: BigLoser (114.33.27.60), 08/20/2014 19:06:59 ※ 編輯: BigLoser (114.33.27.60), 08/20/2014 19:10:59
ssccg: 要不要合併不是只看實作內容,要看代表的邏輯和用途 08/20 20:31
ssccg: 你的舉例來說,你後面的問題來了根本不是個問題 08/20 20:35
ssccg: 作法改了當然就呼叫新的function,跟原本的關係在哪? 08/20 20:37
BigLoser: 公式大部分是共用的 只有一小部分不同 08/20 21:06
BigLoser: *相同 08/20 21:06