З усіма коментарями щодо переоцінки я думаю, що пропущено скромну кількість балів (ну можливість).
Йдеться не про оцінку витраченого часу, щоб зробити зміни (просто), а потім додати деякі, а про оцінку часу, необхідного для зміни коду (рефактор!), Щоб довести його до точки, коли зміни можуть бути безпечно внесені, а потім зробити зміна (ймовірно, дещо заглушені разом). Гаразд, це одне і те ж ... але питання про підробку або розтягування або переоцінку не виникає, його просто потрібно сказати, що для цього я спочатку повинен це зробити, і це скільки часу знадобиться загалом. Тут важливо те, що ви працюєте над тими частинами системи, від яких залежать зміни, і більше - якщо в іншому місці є жахливий код ... важко, вловіть його, коли ви там.
Щоб повернутися до початкового питання - через багато років це зводиться до цього для мене, коли ви реалізуєте щось, якщо ви не знаєте (не вірите, не сподіваєтесь (підозрюєте?), Не думаєте, але знаєте ), що додаткові речі - це також потрібно тоді робити все, що потрібно, щоб виконати цю вимогу, і не більше, настільки акуратно та елегантно, як ви можете.
Коли ви приймете реалізовувати наступне - дещо пізніше - ви вживаєте кроків, необхідних для приведення бази даних коду (і бази даних та будь-якого іншого) до стану, необхідного для того, щоб реалізувати цю функціональність настільки ж акуратно та елегантно. Цей рефакторинг - це те, коли ви маєте справу з безладом, який виникає природним чином у міру розвитку проекту, - і, сподіваємось, уникнути створення більшої безладу (або, принаймні, дотримуйтесь рівня).
Один з напрямків обговорення тут - "Технічний борг" - це як перевершення коштів, ви повинні повернути його назад, і чим довше ви його залишите, тим більше відсотків (у цьому випадку потрібно для виправлення) ви накопичите - що дає хороший результат аргумент витрачати частину свого часу, мінімізуючи технічну заборгованість.
Тут також починають приїжджати одиничні тестування та інші автоматизовані тестування (якби я міг це зробити так само, як я можу сказати, що я досить впевнений, що я був би щасливішою людиною!) У поєднанні з належним сервером збірки (який може працювати хоча б деякі ваших тестів). У поєднанні з тими, але цінністю їх самих - є такі моделі, як нагнітання залежності та інверсія контролю (ніколи не впевнений, наскільки "однакові" ці двоє), тому що вони полегшують зміну сантехніки і, отже, вирішують зміни ізоляція.
Нарешті - пам’ятайте, якщо він не зламався, не виправляйте. Прибирання коду виключно заради прибирання, це може бути задоволенням, але це також можливість вводити помилки, так що це може бути боляче, якщо вам не потрібно змінювати його і не будувати на ньому, можливо, краще залишити трохи грудок поодинці - можливість виправити або замінити згодом обернеться!