[問題] 多執行緒中,程式架構的問題:彈性與簡潔

看板C_Sharp (C#)作者 (笨嘎嘎)時間11年前 (2013/12/11 16:21), 編輯推噓3(303)
留言6則, 5人參與, 最新討論串1/1
最近在寫的時候遇到些許瓶頸, 希望各位前輩可以提供一點經驗指點。 目前卡的比較久的是, 「程式的彈性」與「程式的簡潔」不太知道該怎麼抓平衡點。 用個例子來說明, 假設今天我有兩條thread, 一條抓奇摩氣象的北部地區,用classN包起來 一條抓奇摩氣象的南部地區,用classS包起來, 換句話說,今天我要抓北部, 我就用一個thread,叫這條thread使用classN中的參數與function。 而Class_N與Class_S中有部分function一模一樣,舉例: ClassN:fun高溫 + fun降雨機率 + fun濕度 ClassS:fun高溫 + fun紫外線 + fun濕度 我有兩種做法 做法1:保持彈性 ClassN:抓溫度 + 抓降雨率 + 抓濕度 ClassS:抓溫度 + 抓紫外線 + 抓濕度 優點: (1) 如果,南部跟北部的抓溫度方法不一樣,只要針對該class改 (2) Debug比較快速,因為不同thread分開的class,只要是南部有錯誤,針對南部查就好 缺點: (1) 如果兩個都同時改變或都不改變,重複一樣的程式碼只是造成以後修改的麻煩。 如:南部北部的抓溫度方法有改變,改了南部卻忘了北部(漏掉),或要改兩次(重複) 做法2:保持簡潔 ClassN:ClassFun.抓溫度 + ClassFun.抓降雨率 + ClassFun.抓濕度 ClassS:ClassFun.抓溫度 + ClassFun.抓紫外線 + ClassFun.抓濕度 ClassFun:抓溫度 + 抓降雨機 + 抓濕度 + 抓紫外線 優點: (1) 好維護,修改抓溫度或新增一個抓空氣乾淨度,兩個地區都可以適用 缺點: (1) 無法快速的Debug,今天抓溫度出錯,我卻不清楚是南部的錯還是北部的錯。 (2) 南北部抓溫度方法改變,對ClassFun修改,修改後可能導致其他沒問題便有問題。 想請問各位前輩的意見與想法, 這困擾了我許久~"~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.249.117.37

12/11 20:53, , 1F
為何不設計個 Class_location 寫好共通函數,有要改再
12/11 20:53, 1F

12/11 20:53, , 2F
在各地區 overwrite?
12/11 20:53, 2F

12/11 23:42, , 3F
Interface?
12/11 23:42, 3F

12/11 23:46, , 4F
感覺適用 http://ppt.cc/ysD~
12/11 23:46, 4F

12/12 11:38, , 5F
感謝樓上各位前輩意見,我有方向怎麼做了^^
12/12 11:38, 5F

12/21 01:17, , 6F
interface abstract virtual
12/21 01:17, 6F
文章代碼(AID): #1Ig224cT (C_Sharp)
文章代碼(AID): #1Ig224cT (C_Sharp)