Нарушение зависимостей, когда вы не можете вносить изменения в другие файлы? - PullRequest
1 голос
/ 11 мая 2010

Я занимаюсь некоторой скрытной гибкой разработкой проекта. Ведущий программист рассматривает модульное тестирование, рефакторинг и т. Д. Как пустую трату ресурсов, и нет способа убедить его в обратном. Его философия такова: «Если ничего не сломано, не почините его», и я понимаю его точку зрения. Он работает над проектом более десяти лет и знает код внутри и снаружи. Я не собираюсь обсуждать методы разработки.

Я новичок в проекте, и мне было поручено добавить новую функцию. Я работал над унаследованными проектами и использовал методы гибкой разработки с хорошим результатом, но эти команды были более восприимчивы к этой идее и не боялись вносить изменения в код.

Мне сказали, что я могу использовать любую методологию разработки, какую захочу, но я должен ограничить свои изменения только теми, которые необходимы для добавления функции. Я использую tdd для новых классов, которые пишу, но продолжаю сталкиваться с препятствиями, вызванными либеральным использованием глобальных переменных и высокой связью в классах, с которыми мне нужно взаимодействовать. Обычно я начинаю извлекать интерфейсы для этих классов и делаю их зависимость от глобальных переменных явной, вводя их в качестве аргументов конструктора или открытых свойств.

Я мог бы утверждать, что изменения необходимы, но, учитывая, что лидерство никогда не заставляло их делать, я сомневаюсь, что он увидит это по-моему. Какие методы я могу использовать, чтобы сломать эти зависимости, не раздражая перья ведущего разработчика?

Я добился некоторого прогресса, используя:

  • Извлечение интерфейса (для новых классов, которые я создаю)
  • Расширьте и переопределите своенравные классы с помощью тестовых заглушек. (к счастью, большинство методов являются общедоступными виртуальными)

Но эти двое могут получить меня до сих пор.

Примечание

Часть обязанностей ведущего заключается в рассмотрении представленных кодов. Он, скорее всего, истолковал бы антикоррупционный слой в лучшем случае как чрезмерный, а в худшем - как оскорбление.

Ответы [ 2 ]

0 голосов
/ 11 мая 2010

В таком случае антикоррупционный слой может работать, хотя вы должны быть осторожны, так как слишком многие из них приводят к довольно ужасным результатам.

С таким уровнем вы можете угрожать остальной системе, как если бы вы угрожали внешним ресурсам.

0 голосов
/ 11 мая 2010

Вы должны создать антикоррупционный слой, где вы в основном сохраняете слой между вами и кодом «эксперта», используя классы-обертки. Это будет цена борьбы с такой ерундой.

Существуют также некоторые фальшивые фреймворки, которые позволяют вам не менять существующий код, но они, вероятно, доставят вам больше политических проблем, чем простые классы-оболочки.

...