Як рефакторити код
Рефакторинг слід проводити серією невеликих змін, кожна з яких робить існуючий код трохи краще, залишаючи програму в робочому стані.
Чек-ліст правильно проведеного рефакторингу:
Код повинен стати чистішим.
Якщо після рефакторингу код залишився таким же брудним... Що ж, шкодую, ви тільки що витратили даремно час свого життя. Але хоча б розберіться чому це сталося.
Найчастіше це трапляється тоді, коли ви відходите від проведення рефакторингу дрібними змінами і змішуєте купу рефакторингів в одну величезну зміну. Так дуже легко втратити голову і наробити помилок, особливо, якщо ви обмежені в часі.
Але таке буває і при роботі з особливо занедбаним кодом. Що б ви не поліпшили, код в цілому все одно залишається потворним. У цьому разі покращити код можна тільки повністю переписавши якісь його частини. Але пам’ятайте, що перед цим у вас повинні бути написані тести, а також запланований неабиякий шматок вільного часу.
В процесі рефакторингу НЕ створюється нова функціональність.
Не змішуйте рефакторинг і безпосередню розробку нових фічей. Намагайтеся розділяти ці процеси хоча б в рамках окремих комітів.
Всі існуючі тести повинні успішно проходити.
Існують два випадки, коли після рефакторингу ламаються тести:
-
Ви допустили помилку при зміні коду. Тут все просто - йдіть і виправте помилку.
-
Ваші тести були занадто низькорівневими. Частіше за все, це трапляється тоді, коли ваші тести перевіряють роботу приватних методів класів.
У цьому разі винні тести, тому вам треба або відрефакторити їх, або написати нові, більш високорівневі. Такої ситуації можна взагалі уникнути, створюючи тести в стилі BDD.