如何处理库中的函数弃用?

时间:2008-09-30 08:18:45

标签: java api

我正在研究Java库,并希望从中删除一些函数。我的理由是公共API和设计清理。有些对象有setter,但应该是不可变的,有些功能在不同的方法中更好/更清洁等等。

我已将这些方法标记为“已弃用”,并希望最终将其删除。目前我正在考虑在几次冲刺(两周开发周期)后删除这些。

是否有关于删除冗余公共代码的“最佳做法”?

/ JaanusSiim

8 个答案:

答案 0 :(得分:10)

设置日期并在@deprecated标记中公布。删除所需的时间取决于您的代码的用户数量,您与他们之间的联系程度以及更改的原因。

如果你有成千上万的用户并且几乎没有与他们交谈,那么时间框架应该在几十年的范围内: - )

如果您的用户是您的10位同事并且您每天都会看到它们,那么时间范围很容易在几周内完成。

/**
 * @deprecated
 * This method will be removed after Halloween!
 * @see #newLocationForFunctionality
 */

答案 1 :(得分:2)

以这种方式考虑,客户A下载最新版本的库文件或框架工作。他在这台机器上遇到编译,突然他看到成千上万的错误,因为成员文件或函数不再存在。从现在开始,您已经向客户提供了不升级到新版本并保留旧版本的原因。

Raymond Chen通过他关于win32 API的博客

回答了这个问题

尽管我们在软件公司的经验是,一旦API编写完成,我们就必须将API带到产品生命周期的最后。为了帮助用户使用新版本,我们提供了与新框架中旧命令的向后兼容性。

答案 2 :(得分:1)

这取决于代码重建的频率。例如,如果有4个应用程序使用该库,并且它们每天都在重建,则一个月的时间足以修复已弃用的调用。

此外,如果您使用已弃用的代码,请提供一些注释,说明哪些代码替换了已弃用的代码。

答案 3 :(得分:0)

使用@deprecated标记。请阅读Deprecation of APIs文档以获取更多信息。

每个使用该代码的人都告诉你他们已经清理了他们,开始删除已弃用的代码并等待,看看是否有人抱怨 - 然后告诉他们修复自己的代码......

答案 4 :(得分:0)

鉴于这是一个库,请考虑使用已弃用的函数归档版本。以源代码和编译形式提供此版本,作为那些尚未将代码现代化到新API的人的备份解决方案。 (需要使用二进制形式,因为即使您在几年内编译旧版本也可能会遇到问题。)明确表示不支持和增强此版本。在版本控制系统中使用符号符号标记此版本。然后前进。

答案 5 :(得分:0)

这当然取决于您使用API​​的规模以及您向客户提出的承诺。

如Vinko Vrsalovic所述,你应该输入一个他们不得不放弃这个功能的日期。

在制作中,如果它只是“只是”获得更清晰的代码的问题,我倾向于将事情保留在折旧日期之后,只要它不会破坏任何东西。

另一方面,在开发过程中,我会立即执行此操作,以便快速整理出来。

答案 6 :(得分:0)

您可能对某些其他项目中弃用的工作原理感兴趣。例如,下面是policy in the Django project for function deprecation的内容:

  

次要版本可能会弃用先前版本中的某些功能。如果不推荐使用版本A.B中的功能,则它将继续在版本A.B + 1中工作。在版本A.B + 2中,使用该功能将引发PendingDeprecationWarning但仍将继续工作。版本A.B + 3将完全删除该功能。

答案 7 :(得分:-2)

太糟糕了,你没有使用.Net :(

内置的Obsolete属性会生成编译器警告。