javascript库应该使用已弃用的注释吗?

时间:2013-01-16 17:02:22

标签: javascript deprecated

显然,由开发人员决定何时弃用以及何时删除,但我想知道如何警告开发人员已弃用javascript函数?

某些流行语言(JavaC#Python)支持某种形式的语言级弃用。

对于Javascript,我找不到任何标准方式,开发人员可以指示函数已被弃用(在代码中)。我能做的最好的就是关注(大量)发行说明。

作为一个例子,grepping jQuery 1.8的完整源代码显示了最小的内联注释:

# curl http://code.jquery.com/jquery-1.8.0.js | grep -i depre
// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
// Some plugins are using, but it's undocumented/deprecated and will be removed.
// Deprecated
// Limit scope pollution from any deprecated API
// Deprecated, use jQuery.browser.webkit instead

W3C和MDN似乎没有标准方法或提供有关如何处理此问题的建议。

我发现的最好的是JSDoc的@deprecated标签。

有没有人知道javascript 是否有我忽略的弃用注释?是否有更好或更常见的方法来做到这一点?

3 个答案:

答案 0 :(得分:10)

console.log('This function is deprecated.');

这就是jQuery Migrate(用于1.8 - > 1.9升级)帮助人们升级代码的方式。

来自wiki

  

为了允许开发人员在迁移旧的jQuery代码时识别并修复兼容性问题,插件的开发(未压缩)版本会在调用其任何功能时生成控制台警告消息。消息仅在控制台上针对每条唯一消息显示一次。

答案 1 :(得分:7)

基本上没有方式来弃用方法/功能。由开发人员处理已弃用的成员。

我认为可以做的唯一事情是尽最大努力记录已弃用的函数/方法,并在源代码文档中使用@deprecated标记。

然后,一些编译器(Google Closure Compiler会这样做,如果我没有错)和高级IDE,可以使用此标记来验证已编译的源代码并在使用某些已弃用的函数时触发警告。

答案 2 :(得分:0)

使用deprecate()函数

除了JSDoc的util-deprecate标记之外,您还可以使用流行的@deprecated软件包:

import deprecate from "util-deprecate";

/**
 * @deprecated Use bar() instead
 */
const foo = deprecate(function () {

}, "foo() is deprecated, use bar() instead");

用户看到:

foo();
// foo() is deprecated, use bar() instead
foo();
foo();

这不是真正的标准,但它基于Node.js util.deprecate()函数。

您可能需要捆绑器,例如Webpack,Browserify,Rollup等,为浏览器捆绑一个npm软件包。