Найкращі практики

Атомарні коміти

Виділяй не пов'язані між собою зміни в окремі коміти, щоб кожен коміт був логічною одиницею роботи. Такий підхід допомагає розуміти історію змін і за потреби скасовувати їх.

Коміт атомарний тоді, коли його вже неможливо поділити на менші частини.

Погано
1a2b3c
Alex Shvets
2025-04-20 10:00
Додано функціональність купонів (і виправлено посилання в шаблонах email-сповіщень) (а, і ще відрефакторено планувальник листів).
+ Store/Coupons.js
+ styles/coupons.css
M Core/Scheduler/emails.js
M Emails/layout.tpl
Добре
1a2b3c
Alex Shvets
2025-04-20 10:00
Додано функціональність купонів.
+ Store/Coupons.js
+ styles/coupons.css
9f5110
Alex Shvets
2025-04-20 11:00
Виправлено посилання в шаблонах email-сповіщень.
M Emails/layout.tpl
bbc129
Alex Shvets
2025-04-20 11:15
Відрефакторено планувальник листів.
M Core/Scheduler/emails.js

Переваги

  • Легше зрозуміти: атомарний коміт зосереджений на одній логічній зміні, тому іншим (і тобі в майбутньому) простіше зрозуміти призначення та вплив кожного коміту.
  • Простіше налагодження: коли в код проникає помилка, атомарні коміти допомагають точно знайти коміт, який її спричинив, бо кожен коміт — самодостатня зміна.
  • Краща командна робота: колегам простіше переглядати конкретні зміни й давати зауваження, бо кожен коміт присвячений одному завданню чи виправленню.
  • Чистіша історія: з атомарними комітами історія проєкту залишається чистою й упорядкованою — нею легше рухатися й розуміти, як розвивався код.
  • Простіше скасовувати зміни: якщо конкретну зміну треба скасувати, атомарні коміти дозволяють зробити це, не зачіпаючи інші, ніяк не пов'язані зміни, і ризик нових проблем мінімальний.
  • Зручніший cherry-pick: атомарні коміти легше переносити між гілками через cherry-pick, бо кожен коміт — самодостатня одиниця роботи.

Підводні камені

Якщо перестаратися, атомарні коміти можуть вийти боком:

  • Надмірне дроблення: якщо розбивати зміни занадто дрібно, вийде купа крихітних комітів, за якими важко стежити й міркувати про них.
  • Втрата контексту: за маленькими ізольованими змінами може загубитися загальна картина всієї функції чи виправлення.
  • Більше рутини: багато дрібних комітів — це додатковий час на коміти, пуші та, можливо, кілька окремих пулл реквестів.
  • Складніші відкати: якщо функція складається з кількох атомарних комітів, а її треба скасувати, зробити це чисто буде важче.
  • Гірша читабельність: повна історія однієї зміни може розтягтися на багато комітів, і іншим розробникам буде складніше зрозуміти її, читаючи історію.

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