如何在生产代码中处理函数名称错误?


28

我最近在GitHub上遇到了一个Python库。该库很棒,但是在函数名称中包含一个明显的错字。让我们称它为dummy_fuction()应该dummy_function()。此功能肯定是“狂野的”,最有可能在嵌入式系统中使用。

我想到的第一件事是添加具有正确名称的函数的第二个版本,并为下一版本的第一个版本添加弃用警告。

三个问题:

  1. 上面的方法会产生意想不到的后果吗?
  2. 是否有解决此类问题的标准方法?
  3. 弃用警告应保留多长时间?

1
在这种情况下(尽管不是很频繁),静态语言比动态语言要健壮得多:编译器可以检查重命名的函数是否已经存在。
乔治

7
另请参见HTTP
Referer

2
我还要指出Apache的mod_speling,但这可能是故意的。
恢复莫妮卡iamnotmaynard

1
@AakashM:我很喜欢Wikipedia文章现在如何在整个页面上同时使用错误和正确的拼写(即使是指对象而不是术语),而拼写错误的版本更加普遍!
马丁·皮耶特

另一个很好的方面http_referer-“就像我在引荐来源领域时一样。我对自己选择的拼写一无所知。现在我正尝试在OED中更正拼写,因为我的拼写每分钟被使用了数十亿次比他们的。” - 菲利普·哈勒姆·贝克
杰米·布尔

Answers:


29

首先,该政策取决于维护者。

我认为您的问题很有趣,但主要基于观点。

以我个人的观点,您的方法是正确的-重命名该函数,并将拼写错误的版本保留为已弃用的工件,然后重定向到正确的工件。

上面的方法会产生意想不到的后果吗?

它可能会破坏代码,例如。如果有人不能忍受拼写错误,并实施了自己的重命名版本。现在,一旦他们更新库,就会发生名称冲突。

是否有解决此类问题的标准方法?

编写库时不要犯拼写错误;)

弃用警告应保留多长时间?

我认为应该在下一个主要发行版之前(版本号的第一位增加时)保留弃用项。

在这种情况下,某些(有道理的)向后兼容性破坏是可以容忍的,并且库用户有责任确保他们的代码仍然可以正常构建。

只需确保在变更日志中指出:伙计们,如果您使用过dummy_fuction,请将其替换为dummy_function任何地方,那么您就很好了。

如果未对库进行版本控制,那么最好开始对其进行版本控制。


1
很高兴听到。该库已过版本控制,因此版本控制的方法听起来不错。它实际上具有自己的IDE,因此可以从代码完成工具中隐藏拼写错误的版本,这应阻止新用户使用它。如果我能再给您+1的答案,我会的!
2014年

2
这也是我在其他软件中看到的方法。我为开发的软件使用了第三方API,并且他们的API包含一个包含拼写错误的getter方法。通过重命名方法并使用旧的(不正确的)拼写方式创建伪方法(仅调用正确的版本)来解决此问题。虚拟方法除了提及已弃用的方法和指向正确版本的链接外,不包含任何文档。该方法已经存在多年了,以避免破坏任何向后兼容性。
Karl Nicoll 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.