已弃用
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
此條目可能包含原创研究。 |
已弃用[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除外。
参见
参考资料
- ^ 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原生程序或库中已弃用函数的工具