摘要:[C#] 使用 Obsolete 宣告過期的函式
如果您是一位公用函式庫的開發者,您應該會遇上一個狀況
今天 V1.0 釋出時製作了一個功能A,但隨著功能的演進
你寫了個更好的寫法來取代原功能,在這裡稱之為功能B吧
身為一位處女座的開發人員,我希望我的程式碼能夠乾乾淨淨的,每一行都能符合心目中的完美流程
然後舊的東西最好能通通 Delete,就跟房間一樣一塵不染! Perfect!!
BUT !
公用函式庫這種東西就跟潑出去的水一樣無法覆收
一旦版本釋出了大概就會有所謂的歷史包袱
或者您可以直接把舊功能刪除,當然如果有人更新函式庫時大概就會跳錯誤
嚴重點造成軟體崩潰
接下來大概就是無限的電話、Email轟炸
最終我想不怎麼意外的結果應該是上頭逼著你把功能拿回來,至少讓它不要跳錯誤
這太悲慘了,我想還是不要發生得好
那來個折衷方法吧
public class MyClass
{
public MyClass()
{
}
//宣告函式已過期,並輸入警告提示訊息
[Obsolete("這功能過期囉!")]
public void DoSomething()
{
Console.WriteLine("Hello!!");
}
}
如果要引用端的程式引發編譯錯誤則這樣宣告
說明:ObsoleteAttribute 建構函式 (String, Boolean)
[Obsolete("這功能過期囉!", true)]
效果
若有參考到此過期函式的地方則會顯示警告訊息,編譯時期的輸出也會顯示
如果版本已大幅演進並且聲明無法向下相容,那麼則不要做此屬性宣告,就大膽地移除吧
但在實務上許多知名的套件也都存在著陳年的程式碼,相信連微軟內部在處理過期功能時也會審慎看待
畢竟這影響實在太大了
其實這 Obsolete 可以看成一種免責聲明
「我已經先警告你這功能已過時,您當然可以繼續使用,但如果發生問題一概不負責」