Мне интересно, какие стратегии придумали люди для отделения всей лживой логики, необходимой для обеспечения обратной совместимости с основным кодом приложения. Другими словами, стратегии, позволяющие вам приблизиться к тому, чтобы ваш код выглядел так, как будто не было проблем с обратной совместимостью, за исключением отдельных изолированных исходных файлов, отчетливо подходящих для этой задачи.
Например, если ваше приложение читает определенный формат файла, вместо одной гигантской функции разбора файла с гудком, вы могли бы сделать так, чтобы ваш код сначала перебирал список «причудливых» записей / объектов, где каждая из них проверяет файл, чтобы увидеть, это файл, к которому он будет применяться, и в этом случае вызывает собственную логику синтаксического анализа вместо обычной логики регистра.
Quirks - это нормальная стратегия, но вам нужно проделать работу, чтобы подключить хуки к проверкам причуд во всех подходящих местах в вашем приложении, и как будут выглядеть проверки, будет различаться для разных типов причуд и т. Д. Для этой задачи должны быть библиотеки, посвященные шаблону. Другая проблема заключается в том, как обеспечить, чтобы причуды не использовались как зацепки общего назначения в произвольные части приложения.