Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

3年前关闭。



Improve this question




我正在将一个开放源Java库转换为C#,它具有许多标记为已弃用的方法和类。这个项目是一个从干净的开始的机会,因此我计划将其完全删除。但是,由于不熟悉大型项目,我担心这种情况会再次出现。由于许多敏捷开发都围绕着使现在的事情工作并在需要时稍后进行重构而展开,因此似乎似乎不赞成使用API​​是一个普遍的问题。即使我不能完全确定项目的 future 方向,也可以采取一些预防措施来避免/尽量减少API弃用率吗?

最佳答案

我不确定您有很多事情可以做。需求发生了变化,并且如果您绝对必须确保API的客户端不会被较新的API版本破坏,那么您将仅依赖于不赞成使用的代码,直到您认为没有人使用不赞成使用的代码为止。

如果对过时的方法有任何引用,则在代码上放置[过时]属性会使编译器创建警告。这样,如果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."]

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

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

10-13 07:56
查看更多