Лодочный якорь
Это когда вам досталось много кода, и весь этот код бесполезен в рамках задачи. Я такое видел после слияний-поглощений компаний, когда из двух систем компаний в итоге делают одну. Или когда вам достаётся код без базы данных, часть логики реализована в базе — и удачного вам сбора требований и попыток доработки.
В общем, так бывает, что у вас есть что-то не просто неиспользуемое, а ещё и мешающее.
Симптомы
- Целые модули, до которых ни один сценарий не доходит.
- «Мы не знаем, зачем это, но удалять страшно».
- Логика частично в приложении, частично в хранимых процедурах и триггерах.
- Репозиторий хранит код уже закрытых проектов.
Почему возникает
Чаще всего — после слияний компаний, смены владельца проекта, перехода на другую платформу. Код перестал быть нужным, но его никто не удалил.
Пример
«Плохой» вариант: в сервисе лежит модуль старой интеграции, который уже не вызывается, но тянет зависимости и путает при поиске:
# legacy: интеграция с закрытым шлюзом, никем не вызывается
class OldGatewayClient:
...
«Хороший» вариант: код удалён целиком, ответственность — одна:
class NewGatewayClient:
...
Как исправить
- Такое надо вырезать целиком как можно быстрее — код есть в истории версий.
- Проанализировать покрытие (трассировку, логи, поиск по вызовам) перед удалением.
- После слияния систем объединять не код, а функциональность: переписывать то, что нужно, и не тащить остальное.