Мы будем рады ответить на ваши вопросы
Расскажите нам о своём проекте
Время прочтения: 10 минут

Библиотечный код: как избежать дублирования и ускорить разработку | Лучшие практики заказной разработки – Часть 1

Как сократить время разработки и повысить качество кода с помощью библиотечного подхода. Разбираем проблемы дублирования кода и решения от GemsTeam. Читайте первую статью цикла о лучших практиках в заказной разработке.
CEO GemsTeam
Максим Коваленко
Введение
В заказной разработке время — самый ценный и невозобновляемый ресурс.

Когда бизнесу нужно быстрое и надежное IT-решение, разработчики часто оказываются перед сложным выбором:
  • Сделать быстро, но с компромиссами в качестве кода (и потом тратить время на исправление ошибок)
  • Заложить больше времени на создание масштабируемого решения (но превысить сроки, ожидаемые заказчиком)

Как найти баланс? В этой статье мы расскажем о нашем опыте использования библиотечного кода — подхода, который помогает:
  • Ускорять разработку без потери качества
  • Стандартизировать решения для типовых задач
  • Упрощать поддержку готовых продуктов
Главные проблемы в заказной разработке
Дублирование кода

Одна из самых частых проблем — нарушение принципа DRY (Don’t Repeat Yourself). Вместо повторного использования кода разработчики
копируют одни и те же решения из проекта в проект.

К чему это приводит?
  • Трудно поддерживать код — исправления нужно вносить в десятках мест
  • Сложно отследить различия — одинаковые на вид функции могут работать по-разному
  • Пустая трата времени — вместо решения бизнес-задач разработчики пишут один и тот же код
Пример из нашей практики:

В нескольких микросервисах дублировалась логика для HTTP-запросов (повторные попытки, логирование, сбор метрик). Когда потребовалось изменить формат логов, пришлось вручную править 12 разных сервисов — на это ушло 2 недели вместо возможных 2 часов, если бы код был вынесен в библиотеку.
Отсутствие единых стандартов

В заказной разработке часто встречается ситуация, когда:
  • Разные команды решают одинаковые задачи по-своему
  • Нет единого Code Style — код выглядит как "лоскутное одеяло"
  • Типовые задачи (работа с БД, кеширование, логирование) реализованы хаотично

Последствия:
  • Новые разработчики долго вникают в проект
  • Сложно масштабировать систему — каждый модуль работает по своим правилам
  • Риск ошибок из-за непоследовательной архитектуры
Решение: библиотечный код

Что такое библиотечный код?

Библиотека — это набор готовых решений для типовых задач, которые можно использовать в разных проектах.

Как это работает?
1. Повторяющийся код выносится в отдельные модули
2. Сложная логика инкапсулируется в простые интерфейсы
3. Готовые компоненты подключаются в новые проекты за минуты
Наш пример:

  • Вместо того чтобы каждый раз писать HTTP-клиент с нуля, мы используем готовый модуль из библиотеки.
  • 1400 строк кода (обработка ошибок, retry-логика, метрики)
  • Интеграция с Grafana и Sentry
  • Документация и примеры использования
Результат:
  • Новый сервис с отправкой запросов делается за 1 день вместо 5
  • Все логи и метрики сразу работают единообразно
  • При изменении логики правки вносятся в одном месте
Какие задачи можно выносить в библиотеки?
  • Работа с базами данных (ORM, миграции)
  • Интеграции с внешними API (ретраи, токены, кеширование)
  • Фоновые задачи (очереди, расписания)
  • Логирование и мониторинг
  • Безопасность (аутентификация, валидация)
Преимущества подхода
1. Скорость разработки
  • Готовые модули экономят десятки часов рутинной работы
  • Новые проекты стартуют с уже работающими компонентами

2. Качество кода
  • Библиотечный код отлажен и протестирован в бою
  • Меньше багов из-за единой реализации

3. Легкая поддержка
  • Исправления и улучшения применяются ко всем проектам сразу
  • Новые разработчики быстрее вникают благодаря стандартам

4. Снижение стоимости владения
  • Меньше времени на рефакторинг и исправление ошибок
  • Упрощается масштабирование системы
Вывод
Библиотечный код — это не просто набор функций, а стратегия для эффективной заказной разработки.

Он помогает: 🚀 Ускорить вывод продукта на рынок 🔧 Упростить поддержку и развитие 💡 Сосредоточиться на бизнес-логике, а не на велосипедах

Что дальше?
Во второй части цикла мы разберём архитектурные подходы, которые делают код гибким и масштабируемым.
Это не все, читайте
другие интересные статьи