台灣最大程式設計社群網站
線上人數
769
 
會員總數:239316
討論主題:185664
歡迎您免費加入會員
討論區列表 >> VB.NET >> 程式重構(DRY)
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
程式重構(DRY)
價值 : 200 QP  點閱數:264 回應數:6

樓主

Daimom
高級專家
10316 12
3047 1021
發送站內信

捐贈 VP 給 Daimom
想請教前輩,目前有兩台電腦(A,B)使用不同的CSV檔案,差別只在A比B多了三個欄位,
其他的邏輯都一樣,要將資料取出,是否能夠將類別弄成泛型,將值傳入?或是有其他的方法,能夠不要讓程式碼重複?

像這樣

不是很想在多一個class B 然後跑一樣的程式。

搜尋相關Tags的文章: [ 重構 ] , [ 泛型 ] ,
本篇文章發表於2017-01-06 10:23
== 簽名檔 ==
--------------------------------------
1.如果你唯一懂得的工具只有槌子時,很自然你會把所有東西當成釘子來對待。
2.<b>請使用程式標籤包住你的程式碼</b>
3.請將對您有幫助的回覆『標示為解答』,來幫助其他尋找解答的使用者。(在回覆的使用者頭像上面,有『接受的解答』按鈕可選
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

毛豆
檢舉此回應
可以 if else 處理,這是法一

可以用物件繼承,產生兩個物件類別
再透過委派,將較多欄位那邊的處理變成 function 傳入,這是法二

也可以傳設定進去,讓程式吃設定決定要將欄位設定到指定物件的某個屬性,這是法三

一般我選擇法三
本篇文章回覆於2017-01-08 10:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
#毛豆
你說的方法1是指

這樣嗎?

方法2是指
宣告一個C class 繼承 a 跟 b?

方法3不太明白。

目前是用泛型來做,傳函數時,順便將要傳入的class傳入



本篇文章回覆於2017-01-09 10:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

Bill
檢舉此回應
你的 While 迴圈裡就是做資料對應的動作而已吧?
這用泛型 + 反射應該是最直接有效的了。
本篇文章回覆於2017-01-09 15:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
#Bill 是,while底下是拿來做資料對應(LinqtoCSV)。
泛型第一次用,反射...我再去查查資料。謝謝
本篇文章回覆於2017-01-09 16:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Bill
檢舉此回應
咦? 我以為你用了泛型宣告, 以下的程式碼就會直接用反射了...
本篇文章回覆於2017-01-09 17:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
呃,我程度好像還沒到那麼高深...
還再看關於反射的使用情境。
目前的程式是這樣

cc.Read 是 linqToCSV
本篇文章回覆於2017-01-10 10:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.