我对人们提出的将保持向后兼容性所必需的所有笨拙逻辑与应用程序的主代码分开的策略感兴趣。换句话说,让您更接近于让您的代码看起来没有向后兼容性问题的策略,除了明显用于该任务的单独隔离源文件。
例如,如果您的应用程序读取特定的文件格式,而不是一个巨大的喇叭文件解析函数,您可以让您的代码首先迭代“怪癖”条目/对象的列表,其中每个怪癖检查文件以查看它是否是文件它将适用于,如果是这样调用它自己的解析逻辑而不是正常的案例逻辑。
Quirks 是一种不错的策略,但是您必须努力在应用程序中的所有适当位置放置用于进行 quirks 检查的钩子,并且检查的外观会因不同的 quirk 类型等而有所不同。似乎应该有专门为此任务提供样板的库。另一个问题是如何强制执行怪癖不被滥用为通用挂钩到应用程序的任意块。