已棄用

表示某屬性或值已被替代屬性或值取代

已棄用[1](英語:deprecationdeprecated),亦稱不推薦使用[1]不贊成使用[1]已淘汰不宜用[2]不適用[3]等,是在眾多領域中,勸阻不要使用某些術語、特性、設計或實踐。原因通常是它已被取代,或者不再認為是高效或安全的——但還沒有完全去除或禁止使用。

詞源

在一般英語使用中,不定詞「to deprecate」是指「表示不贊成(某事物)。它源於拉丁語動詞「deprecare」,意思是「通過禱告來消除(一場災害)」。在目前的技術用途中,它是表明某項特性已被棄用,或者僅是針對使用該特性的建議。一般來說程式和產品仍可使用「已棄用」的功能,但要注意相關後果。

軟件棄用

使用軟件中存在的已棄用功能可能會引致一條建議訊息,其中可能提及實踐中建議的替代法;已棄用狀態也可能表示將來會刪除該特性。已棄用但尚未移除的特性將提供向下相容性,給程式設計師時間使受影響的代碼符合新標準。

最常見的棄用原因是:

  • 特性已被更強大的替代特性取代。例如,Linux內核中有兩個與Windows網絡通訊的模組:smbfscifs。後者提供更好的安全性、支援更多協定功能,並與內核的其餘部分更好地整合。自納入cifs以來,smbfs已被棄用。
  • 特性包含設計缺陷—經常有安全問題—所以應該避免,但現有代碼依賴於它。簡單的C標準函數gets()就是一個例子,因為使用此函數可能在使用它的程式中引入緩衝區溢位問題。[4]Java API英語Java API方法Thread.stop.suspend.resume是進一步的例子。[5]
  • 特性被認定是無關緊要的,將在未來刪除,以簡化整個系統。早期版本的萬維網標示語言HTML包含一個FONT元素,允許頁面設計者指定文字應顯示的字型。隨着層疊樣式表和HTML 4.0的發佈,FONT元素變得無關緊要,並且減少了HTML中的結構標記和CSS中的圖形格式化的好處。因此,FONT元素在過渡的HTML 4.0標準中已被棄用,並在嚴格版本中被撤除。
  • 軟件的未來版本將進行重大的結構性更改,從而不可能(或不太可能)支援舊功能。例如,在蘋果公司 計劃從Mac OS 9過渡到Mac OS X時,它建立了舊系統API的一個子集以支援大多數程式只需少量更改:在Mac OS 9和Mac OS X中可用的Carbon庫(已被棄用)。當時主要使用Mac OS 9的程式設計師可以僅使用Carbon支援的API函數來確保他們的程式在Mac OS X上原生執行。其他Mac OS 9功能已被棄用,並且Mac OS X永不原生支援。
  • 標準化或增加命名一致性。長期開發或由多個個人或團體開發的專案可能包含各種不一致的命名。這些可能是由於缺乏遠見、術語隨時間推移而變化,或者個人、地區或教育方面的術語差異。由於僅重新命名會破壞向下相容性,因此現有名稱必須保留。原始名稱可能會無限期地保留,但不鼓勵使用並改用新的更一致命名約定。一個例子是一個交替使用「color」與「colour」的API。標準化意味着只能使用一種地區拼寫,另一種拼寫被廢棄。
  • 將只使用一次的特性與現在的通用特性相結合。一個例子是VLC Media Player。 VLC曾經身為「VideoLan Client」,並提供一個單獨的「VideoLan Server」用於其協同運作功能。目前兩類功能已整合到同一個軟件套件中,不再能獨立取得其中一種功能。

其他用法

硬件設計中的一個例子是在未使用的輸入到邏輯門上省略上拉電阻。這種做法在過去可能是可接受的,但由於更快的時鐘速度可能在輸入線路上引起更多的暫態雜訊,導致硬件毛刺或故障,因而已被禁用。

建築規範中的一個例子是使用不接地(2線)的電氣插座。隨着時間推移,這些舊款裝置已被棄用,改用更安全的接地插座(3線)。過時的未接地插座仍按「祖父條款」在現有的電氣線路中被允許,但已禁止新設安裝。未接地的插座仍可合法購買,但僅用於修理現有的舊電氣裝置。

在撰寫和編輯時,如果某個單詞對某些讀者來說可能模糊、令人困惑或令人厭惡,可能棄用對它的使用。

在技術標準中,新的條款可能不鼓勵或替代某一條款。舉例來說,乙太網路標準IEEE 802.3-2012,第5條(層管理)已在第30條「管理」中不鼓勵使用,僅5.2.4除外。

當一個技術術語變得過時英語Obsolescence,或者改變或超出範圍時,它也可能被棄用。[6][7][8]

參見

參考資料

  1. ^ 1.0 1.1 1.2 微軟語言門戶 術語搜尋頁面存檔備份,存於互聯網檔案館),
  2. ^ deprecated 學術名詞 電子計算機名詞[失效連結],國家教育研究院 樂詞網(繁體中文)
  3. ^ deprecated 《資訊與通訊術語大辭典》[失效連結],國家教育研究院 樂詞網(繁體中文)
  4. ^ GNU. Line Input. The GNU C Library. GNU. [2008-08-02]. (原始內容存檔於2021-01-26). Deprecated function: char * gets (char *s). ... The gets function is very dangerous because it provides no protection against overflowing the string s. The GNU library includes it for compatibility only. You should always use fgets or getline instead. 
  5. ^ Java Thread Primitive Deprecation. Oracle. [13 May 2011]. (原始內容存檔於2011-10-15). 
  6. ^ Brontosaurus Finally Validated as a Distinct Dinosaur. [2017-06-18]. (原始內容存檔於2020-12-15). 
  7. ^ Upchurch, Paul; Barrett, Paul M.; Dodson, Peter. Sauropoda. Weishampel, David B.; Dodson, Peter; and Osmólska, Halszka. (eds.) (編). The Dinosauria 2nd. Berkeley: University of California Press. 2004: 259–322. ISBN 0-520-24209-2. 
  8. ^ Nomenclature of Organic Chemistry : IUPAC Recommendations and Preferred Names 2013 (Blue Book). Cambridge: The Royal Society of Chemistry英語Royal Society of Chemistry. 2014: 725. ISBN 978-0-85404-182-4. doi:10.1039/9781849733069-FP001. 

外部連結