← Назад к обзору

Лодочный якорь

Это когда вам досталось много кода, и весь этот код бесполезен в рамках задачи. Я такое видел после слияний-поглощений компаний, когда из двух систем компаний в итоге делают одну. Или когда вам достаётся код без базы данных, часть логики реализована в базе — и удачного вам сбора требований и попыток доработки.

В общем, так бывает, что у вас есть что-то не просто неиспользуемое, а ещё и мешающее.

Симптомы

  • Целые модули, до которых ни один сценарий не доходит.
  • «Мы не знаем, зачем это, но удалять страшно».
  • Логика частично в приложении, частично в хранимых процедурах и триггерах.
  • Репозиторий хранит код уже закрытых проектов.

Почему возникает

Чаще всего — после слияний компаний, смены владельца проекта, перехода на другую платформу. Код перестал быть нужным, но его никто не удалил.

Пример

«Плохой» вариант: в сервисе лежит модуль старой интеграции, который уже не вызывается, но тянет зависимости и путает при поиске:

# legacy: интеграция с закрытым шлюзом, никем не вызывается
class OldGatewayClient:
    ...

«Хороший» вариант: код удалён целиком, ответственность — одна:

class NewGatewayClient:
    ...

Как исправить

  • Такое надо вырезать целиком как можно быстрее — код есть в истории версий.
  • Проанализировать покрытие (трассировку, логи, поиск по вызовам) перед удалением.
  • После слияния систем объединять не код, а функциональность: переписывать то, что нужно, и не тащить остальное.