Вхід Реєстрація
Реклама
Ваше рекламне місце
Забронюйте цей слот без конкуренції на обраний період.
Купити рекламу →
Логотип телеграм спільноти - Codica - корисне про IT
Додано 14 лип 2024

Codica - корисне про IT

@codica
Кількість підписників: 2 125
Фото: 2,990
Відео: 149
Посилання: 1,540
Опис:
Привіт, друже, це канал про корисності в ІТ🤘 🔺Даємо практичні матеріали з RoR, JavaScript, QA, DevOps 🔺Розкажемо як знайти першу роботу без хвилювань та проблем ✍️Для звʼязку-@klimenko_nataly 👉 Відкриті вакансії - www.codica.com/careers
Джерело

Codica - корисне про IT | Fat model / Fat controller: коли клас росте швидше за проєктЯкщо у вас...

Логотип телеграм спільноти - Codica - корисне про IT Codica - корисне про IT @codica
213 Охват/переглядів 2026-06-19 09:04 Повідомлення №4673
Fat model / Fat controller: коли клас росте швидше за проєктЯкщо у вас є модель на 1200+ рядків або контролер, який “трошки робить усе” — цей пост для вас 🙂У Rails легко почати красиво.Але з часом у модель додається:• бізнес-логіка• інтеграції• callback-и• валідації• формування JSON• умовні переходи станівІ раптом один клас починає вирішувати пів проєкту.Ми всі через це проходили 🙂👉 У чому проблема🔹 Код важко читати🔹 Логіка розмазана🔹 Тести стають складними🔹 Будь-яка зміна ламає щось несподівано🔹 Новому розробнику потрібно пів дня, щоб зрозуміти “що тут відбувається”Модель перетворюється на “божественний об’єкт”.👉 Чому це трапляється саме в RailsRails заохочує логіку в моделях.І на початку це правильно.Але:ActiveRecord ≠ місце для всієї бізнес-логіки.Модель відповідає за дані.А не за весь життєвий цикл домену.Як зрозуміти, що вже “fat”• файл важко прогорнути• методи не пов’язані між собою• з’явились 5+ callback-ів• модель знає про зовнішні API• ви боїтесь її чіпати👉 Що робити замість цього1️⃣ Service objectsВиносимо бізнес-логіку:ruby class CreateOrder def call(params) ... endend 2️⃣ Query objectsСкладні запити — не в модель.3️⃣ Form objectsОсобливо для складних форм і multi-step flows.4️⃣ PORO (Plain Old Ruby Object)Не все повинно бути ActiveRecord.👉 Маленьке правилоЯкщо метод не працює з полями моделі напряму — можливо, він не повинен бути в ній.Який найбільший файл моделі ви бачили? І скільки там було рядків? 😄TikTok | Instagram | Telegram