Dan*_*Tao 5 language-agnostic api documentation performance backwards-compatibility
软件开发中的一个常见规则是,一旦你部署了一个公共API,特别是如果你已经记录了那个API(是的,你应该有),你必须经过长时间的考虑才能做出任何可能会倒退的变化.与该API的兼容性,因为此类更改将破坏更改.事实上,我相信很多开发人员会争辩说,你不应该完全不做,无论你考虑多久和多难.
有时,开发人员会实际记录方法的性能.很多MSDN文档都这样做,例如,使用Big O表示法.改变这种情况也会构成"破裂"的变化吗?也许这不是一个明确的问题; 换句话说:应该避免吗?
这在我看来,在情况下,例如,你可能已经开发出了卓越的算法来解决一个问题,如果您以前记录的,该算法是O(N 2),你可能会被原谅的改善与这个替换它的API优越的算法,例如O(log N).您的API用户可能会注意到这一点,我想,只会觉得很有待改进.
另一方面,我想知道,出于其他原因,是否会因为API的某个组件的性能恶化而被认为是"可原谅的" - 例如,您针对最常见的用例进行优化,导致一般情况下性能下降; 您在CPU周期内优化内存,反之亦然; 你消除了导致其他问题的外部依赖等.
我的直觉告诉我,提高性能几乎肯定是好的.对面怎么样?是否可以,假设您更新了文档?这是错的吗?我在这里只是寻找一些合理的指导方针.
好吧,如果你让表现变得更好,我怀疑你会收到任何抱怨。
否则,我会说这取决于。如果您可以访问所有客户的源代码,那么正确的做法是仔细检查所有客户并验证您的更改不会给他们带来任何麻烦。
如果情况比这更复杂,并且您可能会使某些用例的性能显着恶化,那么您应该与您的客户交谈并警告他们有关更改的信息。
如果您也无法做到这一点(例如:某种收缩包装的 API),那么是的,最好将更改实现为替代调用或其他调用,并保留旧调用。