【发布时间】:2011-01-14 14:31:08
【问题描述】:
我正在与一位同事谈论我们使用的某些软件包的一种相当意外/不受欢迎的行为。尽管我们有一个简单的修复(或至少是解决方法),没有任何明显的副作用,但他强烈建议通过硬修补并将补丁发布到上游来扩展相关代码,希望在将来的某个时候被接受。事实上,我们会针对多个软件包的特定版本维护补丁,这些补丁会自动应用于每个新版本。主要论点是这是正确的做法,而不是“丑陋”的解决方法或脆弱的猴子补丁。另一方面,我更喜欢实用性而不是纯粹性,我的一般经验法则是“无补丁”>“猴子补丁”>“硬补丁”,至少对于(关键)错误修复之外的任何东西。
所以我想知道是否有一个共识,什么时候最好是(硬)补丁、猴子补丁,或者只是尝试解决不能完全按照人们想要的方式解决的第三方包。它是否主要与补丁的原因(例如修复错误、修改行为、添加缺少的功能)、给定的包(大小、复杂性、成熟度、开发人员响应能力)、其他原因或没有一般规则和一个应该根据具体情况决定吗?
【问题讨论】:
标签: oop language-agnostic monkeypatching patch