Fw: [問題] 改code改到累了 耦合模式

看板Programming作者 (s4300026)時間5年前 (2019/05/20 11:21), 編輯推噓2(201)
留言3則, 3人參與, 5年前最新討論串1/1
※ [本文轉錄自 C_Sharp 看板 #1SuXiP0z ] 作者: s4300026 (s4300026) 看板: C_Sharp 標題: [問題] 改code改到累了 耦合模式 時間: Mon May 20 11:12:23 2019 是這樣的 最近小弟改code改到累了, 改到非常想翻桌 想跟各位大神討論該怎麼做 Obsolete 程式碼的編程 我的實際應用狀況是這樣的:(我舉兩個例子都是相同問題) =================================== 情境1. WriteTraceLog 在原本一開始的時候我根本不會去寫所謂的Log File 只要編譯可以過就行了 直到某一天我的程式出問題 我問使用者出了什麼問題? 他說:"就是點點點後就當機了" 能敘述詳細一點嗎? 他說:"就是如下操作..." 然後實際操作正常... 我:...... 從此我學會了WriteLog的重要性 在這個時候的我 撰寫程式碼如下 WriteLog("進入OO方法"); WriteLog("做某事已成功"); WriteLog("退出某方法"); 隨著事情的發展 我明白到Polling Event Callback方法根本不能這樣寫 因為會多一堆垃圾訊息 因此改寫成 WriteLog("EventCallback已呼叫", isDebugMode); 寫到這裡 我覺得自己很厲害 以後就可以不用靠使用者口耳相傳的方式除錯了 只要給我Log檔,剩下我自己想辦法重現 做到這邊 我就在想,如果我能適時的 "順便" 紀錄一些使用者覺得需要的訊息好像也不錯? (以前他們是自己做完自己用紙筆紀錄的) 就在這個時候 我的解決方法是 一般的 WriteLog 是用 Static, static string logPath; static string logFile; 當要特別處理時我另開變數處理 string dynamicLogPath; string dynamicLogFile; 這樣就可以各自處理需要的文件 (讚!) 相安無事一些時間後 我學到了multiThread 因為C#很注重委派方法 我開始在意writeLog是哪個執行序 因此我開始加入thread.CurrentThread, 並開始排版 writeLog("LogStr","NowClassName","NowMethodName"); 然後到了最近 我又學到了 stackTrace(true).GetFrame(1).GetMethod().Name; stackTrace(true).GetFrame(1).GetMethod().DeclareType.Name; 我就想把整個過去的方法整個改掉 不然一路走來的方法實在是太多種了,多到我我覺得我之後一定會忘記哪種是最新的版本 而且印出來的log排版格式完全不一樣,看了格外的痛苦. 因此想問寫程式有什麼好辦法? ================================= 情境2:ConnectMethod 我時常用程式去操控一硬體, 我要給予該硬體一個指定電壓電流的命令 (如LED燈泡,可以吃7V~12V的電壓) 在一開始的版本中 是採用 類比控制 (不連線) 我就只要直接輸出類比電壓就結案了 之後我操控的軟體升級了 改採用 RS232 去操控 (serialPort連線) 然後我就再寫了一個新的版本 又過了幾天 我開始擔心會不會又改了一個新版本 採用網路去控制 (Ethernet連線) 當我開始意識到這個問題時 我開始找解決方法 在 深入淺出 - 設計模式 中 他們的建議是盡量採用 Interface 做變數型別 盡量不要用 class 當變數型別 class SerialPortConnect{} interface ConnectMethod{} SerialPortConnect myRS232; (X) ConnectMethod myConnectMethod; (O) 但問題是我已經很懶得再動以前的程式碼了 因為真的花很多時間處理通訊的問題 好不容易有個 "稍微" 穩定的版本 我想詢問版上的大大 會怎麼去處理這樣的問題呢? 我目前的想法是添加警告訊息 [Obsolete("請不要使用",false)] public class MyClass{} 但我想知道大家會怎麼去設計 因為我真的改到不想改以前的程式碼了... 但我又覺得專案中有一堆過時的東西、各種風格令人煩躁... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.235.221 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1558321945.A.03D.html ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: s4300026 (60.250.235.221), 05/20/2019 11:21:43

05/20 20:57, 5年前 , 1F
Log 可用現成的套件如NLog
05/20 20:57, 1F

05/21 08:55, 5年前 , 2F
好的!!!
05/21 08:55, 2F

07/12 20:17, 5年前 , 3F
我也在想為何log不用套件xd
07/12 20:17, 3F
文章代碼(AID): #1SuXr8lK (Programming)
文章代碼(AID): #1SuXr8lK (Programming)