🎉 Ура! Після трьох років роботи, я нарешті випустив англійську версію книжки про патерни! Ось вона »

Як рефакторити код

Рефакторинг слід проводити серією невеликих змін, кожна з яких робить існуючий код трохи краще, залишаючи програму в робочому стані.

Чек-ліст правильно проведеного рефакторингу:

Код повинен стати чистішим.

Якщо після рефакторингу код залишився таким же брудним... Що ж, шкодую, ви тільки що витратили даремно час свого життя. Але хоча б розберіться чому це сталося.

Найчастіше це трапляється тоді, коли ви відходите від проведення рефакторингу дрібними змінами і змішуєте купу рефакторингів в одну величезну зміну. Так дуже легко втратити голову і наробити помилок, особливо, якщо ви обмежені в часі.

Але таке буває і при роботі з особливо занедбаним кодом. Що б ви не поліпшили, код в цілому все одно залишається потворним. У цьому разі покращити код можна тільки повністю переписавши якісь його частини. Але пам’ятайте, що перед цим у вас повинні бути написані тести, а також запланований неабиякий шматок вільного часу.

В процесі рефакторингу НЕ створюється нова функціональність.

Не змішуйте рефакторинг і безпосередню розробку нових фічей. Намагайтеся розділяти ці процеси хоча б в рамках окремих комітів.

Всі існуючі тести повинні успішно проходити.

Існують два випадки, коли після рефакторингу ламаються тести:

  • Ви допустили помилку при зміні коду. Тут все просто - йдіть і виправте помилку.

  • Ваші тести були занадто низькорівневими. Частіше за все, це трапляється тоді, коли ваші тести перевіряють роботу приватних методів класів.

    У цьому разі винні тести, тому вам треба або відрефакторити їх, або написати нові, більш високорівневі. Такої ситуації можна взагалі уникнути, створюючи тести в стилі BDD.