Зміни в коді можуть бути абсолютно різними, виконуватися з різними цілями, спричиняти різні наслідки. Сьогодні ми поговоримо про одну з таких змін, яка викликає чимало запитань у всіх, хто не так тісно пов'язаний із написанням коду. Що таке рефакторинг коду? Коли він застосовується, які наслідки несе, що може бути небезпечний - усе це ми розглянемо у цій статті.
Що таке рефакторинг коду і навіщо він потрібний
Рефакторинг - це процес зміни коду з метою зробити його більш читаним, чистим та зручним для розробників. На відміну від оптимізації, чи інших змін, рефакторинг передбачає ніяких змін у роботі програми, а робота ведеться безпосередньо з придатністю коду подальшої роботи з ним.
Це дуже важливий процес, особливо коли на проекті часто змінюються розробники або залучаються треті особи, яким щоразу потрібно знову розбиратися в коді попередників. Але навіть якщо у вас стала команда, але при цьому непостійний, досить гнучкий проект, до якого часто вносяться зміни, рефакторинг має стати його обов'язковою частиною.
Говорячи простою мовою, рефакторинг можна порівняти з прибиранням, коли ви викидаєте непотрібні речі, потрібні - сортуєте і складаєте по місцях, а зламані меблі, які трималися на скотчі, замінюєте на нові або ремонтуєте належним чином. Загалом, робите все для того, щоб вам було зручно у вашому житлі, не доводилося витрачати час на пошуки потрібних вам речей і будь-який ваш гість міг знайти те, що буде потрібно.
Коли потрібний рефакторинг
Тепер, коли ми розібралися з тим, що таке рефакторинг, погляньмо на причини його проведення. Якщо у вашій компанії або на вашому проекті рефакторинг не входить до стандартного переліку робіт над програмним забезпеченням, вам варто уважно розглянути організаційні процеси, адже в них можуть бути дзвіночки, які вкажуть на необхідність вдатися до рефакторингу коду.
Одна з таких ситуацій - коли розробники, які тільки-но прийшли на проект, змушені витрачати досить багато, і навіть надто багато часу на те, щоб розібратися в коді, перш ніж почати продуктивну роботу. Так, ви втрачаєте дорогоцінний час, який у розробці просто нерозривно пов'язаний із бюджетом.
Також будь-які доопрацювання на проекті можуть затягуватися через те, що закладеного часу виявилося недостатньо, щоб вивчити вихідний код.
Але можуть виникати й такі ситуації, коли, наприклад, за потреби внести якісь зміни до готових ділянок коду програмісти взагалі не можуть назвати вам точні терміни, адже їм спочатку потрібно розібратися. При цьому невідомо скільки на це піде часу, а ризикувати і ставити собі нездійсненні дедлайни ніхто не захоче. Сприймайте такі ситуації не як натяк, а як чітке та беззаперечне керівництво до дії – проводити рефакторинг.
І ще одна причина, через яку вам варто задуматися про переписування коду, це апдейти мов програмування та фреймворків. Справа в тому, що технології не стоять на місці, і деякі можливості, які раніше вимагали описи, наприклад, десять рядків, тепер можна здійснити в одному рядку. Не забувайте оновлювати свій код та йти в ногу з часом.
Як роблять рефакторинг
Вносячи регулярні зміни та проводячи періодичні очищення коду, ви посприяєте нормалізації термінів виконання завдань, адже зможете уникнути непередбачених затримок. Більше того, ви прискорите та спростите процес внесення будь-яких змін, а також пошуку та виправлення помилок. Також, як ви вже могли зрозуміти, ви спростите роботу нинішнім та майбутнім учасникам проекту, зробивши код зрозумілим та читаним для всіх, незалежно від рівня поінформованості з проектом та авторства коду. Ну і, звичайно, ви зможете удосконалити архітектуру майбутнього програмного рішення, що допоможе за необхідності оптимізації чи інших нефункціональних змін.
Але щоб досягти всіх цих ефектів, існують певні методи, які допомагають зробити цей процес більш продуктивним, цілеспрямованим та ефективним.
Методи рефакторингу
Для того, щоб не сліпо і довго правити в полотні коду все, що тільки заманеться, або що зможе знайти розробник, є простий підхід. Існують кілька кроків, які зроблять ваш код значно чистішим. Давайте подивимося, що потрібно робити і на що звертати увагу:
- Видаляємо мертвий код. Насамперед, має сенс позбутися непотрібних ділянок коду, які не виконують жодної функції. Такий код може з'явитися через помилку розробників або помилку у вимогах, або через зміни, які були внесені до сусідніх ділянок коду. Неробочі рядки лише захаращують робоче поле і заважають швидко вникнути в існуючий код, тому з їхнього видалення і варто почати.
- Видаляємо дублі. Дії у програмах часто повторюються, і якщо для однакових дій у різних місцях написані окремі блоки програмного коду, це лише ускладнить завдання. Адже якщо в цій потрібні зміни, їх доведеться вносити кілька разів у кількох місцях.
- Правильно називаємо елементи. Усі змінні, класи та функції повинні називатися по об'єкту або дії, яку вони позначають. Тоді одразу буде зрозуміло, яка ділянка коду за що відповідає. Це спростить процес ознайомлення з кодом, коли до нього потрібно буде повернутися.
- Скорочуємо надто довгі елементи. Сюди відносяться функції, методи, класи та списки параметрів у кожному з них. Кожен із цих елементів не повинен займати більше 20-30 рядків. Якщо це так, рекомендуємо розбити їх на складові та зробити один узагальнюючий елемент, який звертатиметься до дочірніх.
- Зверніть увагу на коментарі. Якщо розробник пояснює свій код, це перший і головний показник того, що сам код не читаємо. Вивчіть коментарі та спробуйте з'ясувати, як можна змінити ті ділянки, до яких вони належать. Якщо ж вам спало на думку залишити коментар у коді, відкиньте її і вирушайте шукати більш "чисті" варіанти реалізації потрібного вам функціоналу.
- Перевірте сусідні ділянки. Завжди, коли вносите будь-які зміни до програмного коду, відразу перевіряйте сусідні ділянки, адже в них можуть бути потрібні аналогічні або взаємопов'язані зміни. Це позбавить вас і подальшого пошуку об'єктів для рефакторингу, і від різних помилок, які можна випадково спровокувати.
Звичайно, це не всі способи зробити ваш код чистішим і читальнішим, але це ключові моменти, які допоможуть досягти прогресу.
Проблеми рефакторингу
Рефакторинг коду значно спрощує і прискорює різні операції з кодом, що позитивно позначається загальної продуктивності робіт у проекті. Але тим не менш, пам'ятайте, впроваджуючи у свої процеси рефакторинг, що ця дія також має свої підводні камені.
Не варто занадто захоплюватися цим процесом, щоб не зробити гіршим.
У чому небезпека рефакторингу
Найстрашніше, що можна зробити при рефакторинг - це надмірно захопитися і почати переробляти абсолютно все. По-перше, це зайва трата часу, яка не покращить вашу роботу. А по-друге, у такому прагненні легко зробити лише гірше. Вносячи занадто багато змін, ви можете спровокувати нові помилки або порушити функціональність і структуру вашого програмного продукту.
Ще одна проблема, пов'язана з рефакторингом, - це прикриття некомпетентності деяких співробітників. Справа в тому, що бувають випадки, коли розробники, прикриваючись рефакторингом, не виконують основних завдань з розробки. А це може призвести до затримок, зривів термінів, збоїв у роботі всієї команди. Якщо бачите таке на своєму проекті, спробуйте спочатку обговорити зі співробітником пріоритети. Але якщо це не допомогло, зверніть увагу на ситуацію більш предметно.
Висновки
Рефакторинг - важливий і необхідний процес, який допомагає прискорити роботу в майбутньому, за невеликих, але продуктивних дій, виконаних у теперішньому.
Його варто проводити на масштабних проектах або за великої плинності кадрів, коли читаність коду - необхідна умова коректної та продуктивної роботи команди. Але чистий код важливий на будь-якому проекті, адже допомагає швидше знаходити та виправляти помилки при тестуванні, а це вже суттєво.
Вдаючись до рефакторингу на своєму проекті, необхідно в першу чергу звертати увагу на мертвий код, дублі, назви та обсяги елементів, а також коментарі до коду. І не забувайте перевіряти сусідні ділянки коду.
Рекомендуємо робити регулярні та невеликі зміни, щоб не зробити гірше і не захопитися цим процесом більше за необхідне. Так, ви підтримуватимете код у чистому стані, і у вас не буде необхідності проводити “генеральне прибирання”.
Ми у WEZOM прагнемо створювати масштабовані ресурси, а тому приділяємо багато уваги правильності та чистоті коду. Це один із чинників успіху наших проектів.