Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

25.09.2024

Рефакторинг в чистому полі

Всі красиві інструкції з розробки починаються з постановки результату та кроків до нього. Але в мене часто трапляються задачі, де результат визначений дуже абстрактно. Наприклад: замінити стару бібліотеку для логінгу на нову. Або: впровадити систему суворої рівночасності для Swift 6.

Зазвичай з такою задачею починаєш щось робити, та потроху приходиш до результату. На жаль, шанси 50 на 50, що посередині загрузнеш в змінах, а код все ще не працює. Одне чіпляється за інше, оновлення тягнуть залежності, а ті — зміни інтерфейсів, і так далі. Чим більше “нестабільних” змін, тим важче робити наступні: ламається перевірка коду, тести, залишається спиратися тільки на власне уявлення.

Я знайшов, що легше в такому випадку відкотитись назад, скласти список вже відомих кроків, та робити їх по одному. На перший погляд, шкода “починати спочатку”, проте розуміння плану все спрощує, та робить деякі зміни суто механічними. Плюс, з Git все зміни можна відкласти в окрему гілку.

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

От би наступного разу згадати, коли сидітиму третій день з тисячами рядків змін та купою помилок компілятора.