C_Sharp 板


LINE

是這樣的 最近小弟改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://webptt.com/m.aspx?n=bbs/C_Sharp/M.1558321945.A.03D.html
1F:推 totte: 建議找一下董大偉 AOP 05/20 12:33
2F:→ ssccg: log通常都用現成的library 05/20 12:36
因為小弟寫任何程式之前,都是先想該有什麼功能 然後就直接實作了,反而幾乎沒有搜尋現成功能的習慣 另外問一下下列兩種情境: 1. 主管不喜歡用外部元件,因為靠別人打造,他總是說要是臨時出問題, 根本就無從修改,感覺不靠譜 (但維修力求盡快好) 2. 編譯環境不能使用 外網 和 USB,所有CODE查詢必須用手機網路, 然後自己手打一遍做撰寫 以上兩種是我覺得是使我有不習慣搜尋現成元件的主因
3F:推 Litfal: log去參考別人的lib和用法,雖然自己做輪子也蠻有趣的 05/20 16:12
4F:推 Litfal: 往壞處看,你經驗不足,設計離到位差太遠。往好處看得話, 05/20 16:16
5F:→ Litfal: 就是你一直在進步啊。 05/20 16:16
6F:→ s4300026: 現在做輪子做到想摔工具了 05/20 16:27
7F:推 YahooTaiwan: 怎麼不用 NLog? 05/20 19:30
同2樓.
8F:推 neo5277: AOP做法+1累一次就好 05/20 19:38
看起來有至少兩個人推AOP,我會朝那個方向去學習的。
9F:→ Litfal: 問題2: 有Visual Studio這個地表最強IDE,重構超簡單 05/21 01:27
10F:→ Litfal: 你只要擷取介面+rename methods,最後再把介面改成同一個 05/21 01:29
這個甜頭有嚐過,撰寫的時候就能看到那些位置有使用到參考該方法 改編時能用rename一次改全部,簡單錯字還會有change供你參考 自動加入interface的方法,然後補上 NotImplementException 整個就很讚!!!! ※ 編輯: s4300026 (60.250.235.221), 05/21/2019 08:51:23
11F:→ ssccg: 如3樓說的,即使自己做也可以參考一下別人的設計 05/21 09:16
12F:→ s4300026: 好的,說也是,不應該什麼都自己想 05/21 10:02
13F:推 jass970991: Log4net 05/21 19:01
14F:推 M9665566: 套用現成工具很重要,不能一直閉門造車 : ) 06/09 13:36
15F:推 Tony427: NLog...另外一堆code都開源了...缺功能自己寫送PR,外部 08/09 02:26
16F:→ Tony427: 元件不是全用全不用,而是要有能力判斷哪個適合解決問題 08/09 02:26
17F:→ Tony427: ,另外有沒有人持續維護 08/09 02:26







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP