Ian*_*oyd 12 language-agnostic api
假设我在代码库中有一个函数,其中有一个错误,我在代码库中发现了一个错误:
class Physics
{
public static Float CalculateDistance(float initialDistance, float initialSpeed, float acceleration, float time)
{
//d = d0 + v0t + 1/2*at^2
return initialDistance + (initialSpeed*time)+ (acceleration*Power(time, 2));
}
}
Run Code Online (Sandbox Code Playgroud)
注意:示例和语言是假设的
我无法保证修复此代码不会破坏某人.
可以想象,有些人依赖于此代码中的错误,并且修复它可能会导致他们遇到错误(我无法想到可能发生的实际方法;也许这与他们构建查找有关距离表,或者如果距离是错误的值而不是他们的预期,他们可能只是抛出异常
我应该创建第二个功能:
class Physics
{
public static Float CalculateDistance2(float initialDistance, float initialSpeed, float acceleration, float time) { ... }
//Deprecated - do not use. Use CalculateDistance2
public static Float CalculateDistance(float initialDistance, float initialSpeed, float acceleration, float time) { ... }
}
Run Code Online (Sandbox Code Playgroud)
在没有正式弃用代码的语言中,我是否只相信每个人都要切换到CalculateDistance2?
它也很糟糕,因为现在理想命名的函数(CalculateDistance)永远会丢失一个可能没有人需要的遗留函数,并且不想使用它.
我应该修复错误,还是放弃它们?
我曾经与一些 MFC 代码进行了几天的斗争,这些代码的行为方式完全出乎意料。当我最终发现这是 Microsoft 提供的库中的错误时,我检查了知识库。它被记录为(大约)“这是我们在 2 个操作系统版本前发现的一个已知错误。我们没有修复它,因为有人可能依赖它”。
我有点生气...
我想说你应该弃用它。如果您要升级代码所依赖的库,则应该使用新库测试代码。如果它是遗留代码,那么它就存在一个已知的配置。为您的用户提供建议并继续前进......