Я занимаюсь некоторой скрытной гибкой разработкой проекта. Ведущий программист рассматривает модульное тестирование, рефакторинг и т. Д. Как пустую трату ресурсов, и нет способа убедить его в обратном. Его философия такова: «Если ничего не сломано, не почините его», и я понимаю его точку зрения. Он работает над проектом более десяти лет и знает код внутри и снаружи. Я не собираюсь обсуждать методы разработки.
Я новичок в проекте, и мне было поручено добавить новую функцию. Я работал над унаследованными проектами и использовал методы гибкой разработки с хорошим результатом, но эти команды были более восприимчивы к этой идее и не боялись вносить изменения в код.
Мне сказали, что я могу использовать любую методологию разработки, какую захочу, но я должен ограничить свои изменения только теми, которые необходимы для добавления функции. Я использую tdd для новых классов, которые пишу, но продолжаю сталкиваться с препятствиями, вызванными либеральным использованием глобальных переменных и высокой связью в классах, с которыми мне нужно взаимодействовать. Обычно я начинаю извлекать интерфейсы для этих классов и делаю их зависимость от глобальных переменных явной, вводя их в качестве аргументов конструктора или открытых свойств.
Я мог бы утверждать, что изменения необходимы, но, учитывая, что лидерство никогда не заставляло их делать, я сомневаюсь, что он увидит это по-моему. Какие методы я могу использовать, чтобы сломать эти зависимости, не раздражая перья ведущего разработчика?
Я добился некоторого прогресса, используя:
- Извлечение интерфейса (для новых классов, которые я создаю)
- Расширьте и переопределите своенравные классы с помощью тестовых заглушек. (к счастью, большинство методов являются общедоступными виртуальными)
Но эти двое могут получить меня до сих пор.
Примечание
Часть обязанностей ведущего заключается в рассмотрении представленных кодов. Он, скорее всего, истолковал бы антикоррупционный слой в лучшем случае как чрезмерный, а в худшем - как оскорбление.