2016-02-18 5 views
1

Мне было поручено реорганизовать инструмент, полный дублированного кода, связанных модулей (даже автор кода боится ничего изменить, так как он не знает, на что это может повлиять) и слишком сложная база данных (250+ запросов, которые можно заменить примерно на 20).Как объяснить преимущества рефакторинга кода спагетти?

Клиенты проекта знают, что инструмент трудно поддерживать и изменять, но не имеют технической экспертизы.

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

+0

http://careers.stackoverflow.com/ –

ответ

0

Вы почти ответили на свой вопрос :)

Точка рефакторинга, чтобы сделать код проще, то есть дешевле, изменить. («Ведение» - это всего лишь подмножество «изменений».)

Это прямо в Fowler's definition of refactoring: «существительное: изменение внутренней структуры программного обеспечения, чтобы было легче понимать и дешевле изменять без изменения наблюдаемого поведение". И точка «легче понять» заключается в том, чтобы сделать его более дешевым для изменения. Никто не платит программистам просто сидеть вокруг, понимая вещи и ничего не делая с их пониманием.

Плохой код стоит денег во многих отношениях:

  • Когда вам нужно исправить ошибку или добавить свойство к плохо разложенному программе, требуется дополнительное время, чтобы понять влияние изменения. Это время стоит денег.
  • Когда вы меняете свою плохо используемую программу, вы, скорее всего, выполняете плохую работу: вводите регрессию или исправляете ошибку только частично (если она находится в дублированном коде) или не реализуете вашу новую функцию, а также если бы код был легче работать. Все эти вещи снижают качество вашего продукта, что стоит вам денег из-за
    • снижение продаж или (если это внутренний инструмент) уменьшение использования инструмента и последующая потеря эффективности, которую инструмент предназначен для обеспечения
    • более исправляет ошибку и другие вспомогательные расходы
  • Вы могли бы решить не внести некоторые изменения на всех из-за риска регрессии или другой стоимости изменений. Опять же, это снижает качество вашего продукта, что стоит вам денег.

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

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

Смежные вопросы