api - 避免弃用代码的敏捷实践?

标签 api agile deprecated

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

3年前关闭。




Improve this question




我正在将一个开源 Java 库转换为 C#,其中有许多方法和类被标记为已弃用。这个项目是一个从头开始的机会,所以我计划完全删除它们。但是,作为从事大型项目的新手,我很担心这种情况会再次出现。由于大部分敏捷开发都围绕着现在开始工作,然后在需要时进行重构,因此 API 的弃用似乎是一个常见问题。即使我不完全确定项目的 future 方向,我是否可以采取预防措施来避免/最小化 API 弃用?

最佳答案

我不确定你能做多少。需求发生变化,如果您绝对必须确保 API 的客户端不会被更新的 API 版本破坏,那么您将不得不依赖弃用代码,直到您认为没有人使用弃用代码为止。

在代码上放置 [Obsolete] 属性会导致编译器在有任何对过时方法的引用时创建警告。通过这种方式,API 的客户,如果他们努力修复编译器警告,就可以逐渐转向新方法,而不会因新版本而中断一切。

如果您使用带有字符串的 ObsoleteAttribute 的覆盖,它会很有用:

[Obsolete("Foo is deprecated. Use Bar instead for munging widgets.")]

<轻浮>

也许你可以创建一个 TimeBombAttribute:
[TimeBomb(new DateTime(2010,1,1), "Foo will blow up! Better use Bar, or else."]

在您的代码中,反射具有 timebomb 属性的方法,如果在指定日期之后调用它们,则抛出 KaboomException。这将确保在 2010 年 1 月 1 日之后没有人使用过时的方法,并且您可以很好地清理您的 API。 :)

关于api - 避免弃用代码的敏捷实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087296/

相关文章:

javascript - 没有按钮的FB.api名称显示?

agile - 发布频率是敏捷和瀑布之间唯一真正的区别吗?

tfs - MSF 敏捷 5.0 或 SCRUM 1.0 模板。如何决定?

java - Mozilla Rhino 能否检测并报告是否正在调用已弃用的 Java 方法?

Angular2 的 provide() 函数在 RC4 及更高版本中已弃用,应该使用什么来代替?

路由的 REST API 最佳实践

node.js - Axios 响应循环通过函数仅返回第一个映射对象的结果

ruby-on-rails - 使用 ActiveSupport::Deprecation 标记已弃用的方法

python - 在 python 3 中生成 HMAC Sha256

tfs - 一个产品团队的VSO和多个项目