已棄用
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
此條目可能包含原創研究。 |
已棄用[1](英語:deprecation、deprecated),亦稱不推薦使用[1]、不贊成使用[1]、已淘汰、不宜用[2]、不適用[3]等,是在眾多領域中,勸阻不要使用某些術語、特性、設計或實踐。原因通常是它已被取代,或者不再認為是高效或安全的——但還沒有完全去除或禁止使用。
詞源
在一般英語使用中,不定詞「to deprecate」是指「表示不贊成(某事物)。它源於拉丁語動詞「deprecare」,意思是「通過禱告來消除(一場災害)」。在目前的技術用途中,它是表明某項特性已被棄用,或者僅是針對使用該特性的建議。一般來說程式和產品仍可使用「已棄用」的功能,但要注意相關後果。
軟體棄用
使用軟體中存在的已棄用功能可能會引致一條建議訊息,其中可能提及實踐中建議的替代法;已棄用狀態也可能表示將來會刪除該特性。已棄用但尚未移除的特性將提供向下相容性,給程式設計師時間使受影響的代碼符合新標準。
最常見的棄用原因是:
- 特性已被更強大的替代特性取代。例如,Linux核心中有兩個與Windows網路通訊的模組:
smbfs
和cifs
。後者提供更好的安全性、支援更多協定功能,並與核心的其餘部分更好地整合。自納入cifs
以來,smbfs
已被棄用。 - 特性包含設計缺陷—經常有安全問題—所以應該避免,但現有代碼依賴於它。簡單的C標準函式
gets()
就是一個例子,因為使用此函式可能在使用它的程式中引入緩衝區溢位問題。[4]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除外。
當一個技術術語變得過時,或者改變或超出範圍時,它也可能被棄用。[6][7][8]
參見
參考資料
- ^ 1.0 1.1 1.2 微軟語言門戶 術語搜尋 (頁面存檔備份,存於網際網路檔案館),
- ^ deprecated 學術名詞 電子計算機名詞[失效連結],國家教育研究院 樂詞網(繁體中文)
- ^ deprecated 《資訊與通訊術語大辭典》[失效連結],國家教育研究院 樂詞網(繁體中文)
- ^ 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 strings
. The GNU library includes it for compatibility only. You should always usefgets
orgetline
instead. - ^ Java Thread Primitive Deprecation. Oracle. [13 May 2011]. (原始內容存檔於2011-10-15).
- ^ Brontosaurus Finally Validated as a Distinct Dinosaur. [2017-06-18]. (原始內容存檔於2020-12-15).
- ^ 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.
- ^ Nomenclature of Organic Chemistry : IUPAC Recommendations and Preferred Names 2013 (Blue Book). Cambridge: The Royal Society of Chemistry. 2014: 725. ISBN 978-0-85404-182-4. doi:10.1039/9781849733069-FP001.
外部連結
- How and When To Deprecate APIs (頁面存檔備份,存於網際網路檔案館),JDK 5.0文件
- Detect deprecated functions (頁面存檔備份,存於網際網路檔案館),一個探查Windows原生程式或庫中已棄用函式的工具