Стендап Сьогодні
📢 Канал в Telegram @stendap_sogodni
🦣 @stendap_sogodni@shevtsov.me в Федиверсі

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

27.08.2025

Як зробити проєкт на Go огидним, щоб ніколи більше не писати цією мовою

(Основане, на жаль, на справжньому досвіді.)

Звалити весь код в один пакет. Навіщо нам ці дивні імена з великої літери? Пакети відокремлюють вузли коду. Коли все в одному пакеті — дійсно виходить один великий вузол. І не треба відкладати розбиття на пакети на потім, краще починати новий пакет на кожну потребу, тоді не доведеться його розплутувати.

Використовувати рівночасність без потреби. Я чув, у Go ефективні горутіни — треба брати, щоб було швидше! Памʼятай, що які б вони не були ефективні — а розуміння коду ускладнюють так само. Тому впроваджувати горутіни варто тільки коли послідовне виконання обʼєктивно триває надто довго. Та намагатися відокремити їх від бізнес-логіки, щоб її можна було спокійно зрозуміти та протестувати.

Не писати тестів. В типізованій мові тести не потрібні. Згодний, що типи дозволяють не писати примітивних тестів на узгодженість. Але принаймні типи на рівні Go нічого не кажуть про логіку програми! Тому тести повинні перевіряти логіку виконання, а також — дуже важливо — її документувати.

Використовувати динамічні типи. Типи це чудово. Але я тут читаю JSON, розумієте, тож треба перевіряти кожне поле. Парсер за вас сам перевірить. Динамічні типи та рефлексія — це, певно, найскладніший код в Go, тому їх теж треба виносити в шар абстракції для конкретної потреби, далеко від загального коду. А скоріше — використовувати чужий. Та боже збав вас від “гнучких” методів з динамічними аргументами…

Не слідувати звичаям. Як (моя улюблена особливість JS, Ruby чи Java) робиться тут? Go - це мова з міцними переконаннями. Та це не та мова, яка дозволить вам вигадати власний стиль. Тим паче запозичити стиль з іншої мови, яку ти знаєш. Я не кажу, що звичаї Go найкращі, але принаймні їх доведеться прийняти, а не йти проти них. Думай про це так — без вагань над стилем в тебе буде більше часу на написання корисного коду. Бо це правда.