71

我正在重构一个相当大的 JS 文件,其中包含许多不相关的方法,该文件将根据它们的用法将这些方法重新组合在一起,并根据需要重命名其中的一些(以防止产生误导性名称)。

但是,实际上使用此代码的大多数网页都分布在不同的代码分支中,这使我无法进行简单的查找和替换。我可以在所有不同的分支中执行此操作,但这需要同时在 30 多个分支中进行维护,或者一旦更改合并到其他分支中(由我或其他团队成员),可能忘记执行重命名。

如果这是 C#,我可以用 [Obsolete] 标记该方法,它会根据需要标记必要的更改,所以我正在寻找一些等效的东西。在一段时间内,我仍将通过将调用重定向到新方法来提供旧界面的功能,但我想“强制”人们在出于其他原因在页面上工作时切换到新界面。

debugger; 除了在每个方法中添加语句和详细注释以使其在开发时中断但在生产中不会中断之外,还有其他方法可以做类似的事情吗?

4

3 回答 3

128

在过渡期间,您可以做几件事。

  1. 添加@deprecated JSDoc标志。
  2. 添加指示该函数已弃用的控制台警告消息。

一个样品:

/**
 * @deprecated Since version 1.0. Will be deleted in version 3.0. Use bar instead.
 */
function foo() {
  console.warn("Calling deprecated function!");
  bar();
}
于 2013-10-22T18:33:00.857 回答
0

这是我们为 Visual Studio 2013 找到的内容:http: //msdn.microsoft.com/en-us/library/vstudio/dn387587.aspx

由于我们尚未进行转换,因此尚未对其进行测试,但它看起来很有希望。

同时,我根据上下文在页面加载时插入一个标志,例如:

<%
#if DEBUG
    Response.Write("<script type=\"text/javascript\"> Flags.Debug = true; </script>");
#endif
%>

然后我调用一个方法,如果标志为真,则抛出错误,或者如果它处于发布配置中,则重定向到新调用。

于 2013-10-22T18:10:41.720 回答
0
function obsolete(oldFunc, newFunc) {
  const wrapper = function() {
    console.warn(`WARNING! Obsolete function called. Function ${oldFunc.name} has been deprecated, please use the new ${newFunc.name} function instead!`)
    newFunc.apply(this, arguments)
  }
  wrapper.prototype = newFunc.prototype
  return wrapper
}
于 2020-05-12T20:07:18.443 回答