Со всеми комментариями о переоценке, я думаю, что скромное количество очков (хорошая возможность) упущено.
Речь идет не об оценке времени, затраченного на внесение изменений (просто), а затем о добавлении некоторого количества, а об оценке времени, необходимого для изменения кода (рефакторинг!), Чтобы довести его до точки, где изменение может быть безопасно произведено, и затем сделать изменить (вероятно, несколько смешанных вместе). Ладно, это равносильно тому же ... но нет никаких сомнений в том, что нужно выдумывать, растягивать или переоценивать, просто нужно сказать, что для того, чтобы сделать это, мне сначала нужно это сделать, и это займет много времени. в целом. Ключевым моментом здесь является то, что вы работаете с теми частями системы, от которых зависит изменение, и не более - если в другом месте есть ужасный код ... сложно, поймайте его, когда будете там.
Вернемся немного к первоначальному вопросу - через много лет для меня это сводится к тому, что вы реализуете что-то, если не знаете (не верите, не ожидаете (подозреваете?), Не думаете, но знаете ), что дополнительные вещи Кроме того, необходимо выполнить то, что вам нужно для реализации этого требования, и не более аккуратно и элегантно, как вы можете.
Когда вы приступаете к реализации следующего - некоторое время спустя - вы предпринимаете шаги, необходимые для приведения кодовой базы (и базы данных, и тому подобное) в состояние, необходимое для реализации этой функциональности, настолько аккуратно и элегантно, насколько это возможно. Этот рефакторинг - это то, где вы имеете дело с беспорядком, который возникает естественным образом по мере развития проекта - и, мы надеемся, избегаете создавать больше беспорядка (или, по крайней мере, поддерживать постоянный уровень).
Одна из областей обсуждения здесь - «Технический долг» - это как овердрафт, вы должны его погасить, и чем дольше вы его оставляете, тем больше процентов (в этом случае требуется время для исправления) вы начисляете - что дает вам хороший аргумент в пользу того, чтобы тратить некоторое время на минимизацию технического долга
Это также начало модульного тестирования и другого автоматизированного тестирования (если бы я мог сделать так, как я говорю, я вполне уверен, что я был бы счастливее!) В сочетании с надлежащим сервером сборки (который может запустить по крайней мере некоторые из ваших тестов). В сочетании с таковыми, но ценными сами по себе, являются такие модели, как внедрение зависимостей и инверсия управления (никогда не вполне уверенный, насколько «одинаковы» эти два), потому что они облегчают изменение сантехники и, следовательно, имеют дело с изменениями в изоляция.
Наконец - помните, если это не сломано, не исправляйте это. Чистка вашего кода только ради того, чтобы привести его в порядок, может быть удовлетворительной, но это также дает возможность вводить ошибки, поэтому может быть болезненно, если вам не нужно менять его и не опираться на него, может быть лучше оставить некоторые комки одна - возможность починить или заменить будет в конце концов!