Я уверен, что где-то есть название для этого анти-паттерна; однако я не достаточно знаком с литературой по анти-шаблонам, чтобы знать это.
Рассмотрим следующий сценарий:
or0является функцией-членом в классе Что бы там ни было, это сильно зависит от переменных членов класса. Программист А приходит и нуждается в функциональности, такой как, or0но не вызов or0, Программист А копирует и переименовывает весь класс. Я предполагаю, что она не звонит, or0потому что, как я говорю, она сильно зависит от переменных-членов для ее функциональности. Или, может быть, она младший программист и не знает, как это вызвать из другого кода. Так что теперь у нас есть or0и c0(с для копирования). Я не могу полностью обвинить Программиста А в этом подходе - мы все попали в сжатые сроки и взломали код, чтобы выполнить работу.
Несколько программистов поддерживают, or0так что теперь это версия orN. c0сейчас версия cN. К сожалению, большинство программистов, которые поддерживали содержание класса, or0казалось, совершенно не знают c0- что является одним из самых сильных аргументов, которые я могу придумать для мудрости принципа СУХОЙ. И, возможно, также было независимое ведение кода в c. В любом случае кажется, что or0и c0были поддержаны независимо друг от друга. И, радость и счастье, ошибка происходит в cNтом, что не происходит в orN.
Итак, у меня есть несколько вопросов:
1.) Есть ли название для этого анти-паттерна? Я видел, как это происходит так часто, что мне трудно поверить, что это не названный анти-паттерн.
2.) Я вижу несколько альтернатив:
a.) Исправлена ошибка, orNпри которой принимался параметр, определяющий значения всех необходимых ему переменных-членов. Затем измените cNвызов так, чтобы orNвсе необходимые параметры были переданы.
б.) Попробуйте вручную перенести исправления из orNв cN. (Имейте в виду, я не хочу этого делать, но это реалистичная возможность.)
c.) Переписать, orNчтобы - cNснова, чёрт, но я перечислю это для полноты картины.
г.) Попытайтесь выяснить, где cNсломан, а затем отремонтировать его независимо от orN.
Альтернатива кажется лучшим исправлением в долгосрочной перспективе , но я сомневаюсь , что клиент позволит мне реализовать. Никогда не время и деньги, чтобы исправить все правильно, но всегда время и деньги, чтобы решить ту же проблему 40 или 50 раз, верно?
Кто-нибудь может предложить другие подходы, которые я, возможно, не рассмотрел?
