Я успадкував існуючу базу коду для продукту, який нібито неохайний. Фундаментальна конструкція надзвичайно неадекватна, що, на жаль, я не можу обійтися без повного рефактора (ВИСОКА зв'язок, низька когезія, невпинне копіювання коду, відсутність технічної проектної документації, інтеграційні тести замість одиничних тестів). Продукт має історію, високу схильність до критичних клієнтів «готівкою-коровою» з мінімальною толерантністю до ризику, технічну заборгованість, яка змусить греків червоніти, ДУЖЕ велику кодову базу та складність, а також бойовий підхід дефектистських підходів до помилок командою раніше я.
Стара команда перескочила корабель в інший дивізіон, щоб вони мали можливість зруйнувати ще один проект. Дуже рідко трапляються збої в проекті технічної некомпетентності, на відміну від відмови від управління проектом, але це справді один із таких випадків.
На даний момент я сам, але маю багато часу, свободу рішень та майбутнього напрямку та можливість створити команду з нуля, щоб допомогти мені.
Моє запитання полягає в тому, щоб зібрати думку щодо рефакторингу з низьким впливом на такий проект, коли у вас є вільний час на етапі збору функціональних вимог. Існують тисячі попереджень компілятора, майже всі вони не використовували імпорт, непрочитані локальні змінні, відсутність перевірки типу та небезпечні касти. Форматування коду настільки нечитабельне та неохайне, що схоже на те, що кодер страждав від хвороби Паркінсона і не міг контролювати кількість натискань на пробіл у будь-якій заданій лінії. Подальші ресурси бази даних та файлів зазвичай відкриваються та ніколи не закриваються безпечно. Безглузді аргументи методу, дублюючі методи, які роблять те саме, тощо.
Поки я чекаю вимог до наступної функції, я прибираю речі з низьким рівнем ризику, коли їду, і замислююся, чи витрачаю час чи роблю правильно. Що робити, якщо нова функція означає зірвати код, на який я витратив час раніше? Я збираюся розпочати Agile підхід, і я розумію, що це прийнятно і нормально постійно перетворюватися під час розвитку Agile.
Чи можете ви подумати про якісь позитивні чи негативні наслідки мене, що я роблю це, що ви хотіли б додати?