TGViewer
Devs Hive Devs Hive @devshive · 1.41K subscribers
Post #180 934
Згадав одну цікаву бібліотеку для Nest.js🚬🚬🚬

Це бібліотека для створення абстракцій над CRUD операціями. І водночас - яскравий приклад того, що абстракції потрібно створювати тільки тоді, коли в них виникає реальна необхідність.

Програмісти люблять усі ці DRY принципи, максимальне перевикористання коду і так далі. Але зазвичай надмірне перевикористання закінчується «жирними» сервісами чи компонентами, в яких постійно виникають баги.

Суть цієї бібліотеки в тому, що ви можете успадкувати спеціальний клас, у якому вже реалізований CRUD для певної сутності, яку ви туди передаєте.

Звучить круто, але прості CRUD бувають тільки на старті проєкту (і то не завжди), а потім вони починають розростатися.

Звичайно, бібліотека не могла покрити складні сценарії. Тому замість спроб запхати всю бізнес логіку в універсальну абстракцію команда Nest.js пішла іншим шляхом і зробила boilerplate generator, який просто генерує базову структуру коду, а конкретну реалізацію вже потрібно писати самому.

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

Як на мене, це ще один доказ того, що сучасна розробка - це постійний пошук компромісів де не потрібно бездумно слідувати best practices.

Зрештою, проєкт загнувся, але кому цікаво - можете почитати про нього
  • 👍 9
  • ❤ 3
More from @devshive
  1. Oct 7, 2026Post #289
  2. Oct 7, 2026Post #288
  3. Oct 6, 2026Цікаве оновлення в Nest.js 🔥 Вони випиляли Axios з HTTP клієнта і тепер використовують na…
  4. Oct 6, 2026Ще одне практичне застосування Jev - jevgrep 🤯☕️ Це інструмент для пошуку потрібного коду…
  5. Oct 5, 2026Post #285
  6. Oct 4, 2026Дуже багато відповіли, що Promise виконає обчислення в окремому потоці 🚬 Треба робити від…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →