Щоб висловити свою думку:
Невеликі, поступові зміни, які залишають код у кращому стані, ніж він знайшов
Безумовно, так: "Косметичні" зміни, які не пов'язані безпосередньо з функціями (тобто це не підлягає оплаті як запит на зміну).
Безумовно, ні: переписування великих шматків явно порушує "малі, поступові" частини. Рефакторинг часто використовується як протилежність перезапису: замість того, щоб робити це повторно, вдосконалюйте існуючий.
Безумовно, можливо: Заміна структур даних та алгоритмів є дещо кордоном. Вирішальну різницю тут IMO складають малі кроки: будьте готові до виконання, будьте готові працювати над іншою справою.
Приклад: Уявіть, що у вас є модуль рандомізації звітів, який сповільнюється завдяки використанню вектора. Ви довели, що векторні вставки є вузьким місцем, але, на жаль, модуль багато в чому покладається на суміжну пам’ять, щоб при використанні списку все мовчало ламатись.
Переписування означало б викидання Модуля від будівлі, яка є кращою та швидшою, з нуля, просто вибравши деякі частини зі старої. Або написання нового ядра, а потім введення його в існуюче діалогове вікно.
Рефакторинг означав би зробити невеликі кроки, щоб видалити арифметику покажчика, так що перемикач. Можливо, ви навіть створюєте службову функцію, яка обгортає арифметику вказівника, замінюючи пряму маніпуляцію вказівником викликами до цієї функції, потім перемикаєтесь на ітератор, щоб компілятор скаржився на місця, де арифметика вказівника все ще використовується, потім перемикаєтесь на a list
, а потім видаляєте функція утильності.
Ідея полягає в тому, що код погіршується сам по собі. При виправленні помилок та додаванні функцій якість погіршується невеликими кроками - значення змінної тонко змінюється, функція отримує додатковий параметр, який порушує ізоляцію, цикл трохи ускладнюється і т. Д. Жодна з них не є справжньою помилкою, ви можете не повідомляйте підрахунок рядків, який ускладнює цикл, але ви шкодите читабельності та технічному обслуговуванню.
Подібним чином, зміна імені змінної або вилучення функції не є власними відчутними вдосконаленнями. Але в цілому вони борються з повільною ерозією.
Як стіна з гальки, де кожен день падає на землю. І щодня один перехожий піднімає його і кладе назад.