
Технический долг
Технический долг — это то, что возникает, когда сегодняшние упрощения становятся завтрашними проблемами.
Когда мы как команда ставим скорость выше ясности или дизайна, мы накапливаем технический долг, который позже влияет на всех.
Основные виды
- Долг в коде — дублирование, длинные функции, захардкоженные значения
- Архитектурный долг — плохие абстракции, сильная связность
- Долг в тестах — отсутствующие или устаревшие тесты
- Процессный долг — отсутствие оценок, неясная ответственность, слабая документация
Пример
// Бизнес-логика напрямую зависит от ролей
if ($user->role === 'admin') {
allowAccess();
}
Позже:
// Бизнес-логика напрямую зависит от ролей
if (
$user->role === 'admin' ||
$user->role === 'manager' ||
$user->role === 'owner'
) {
allowAccess();
}
Проблемы:
- Логика ролей дублируется по кодовой базе
- Любое изменение требует правок в нескольких местах
- Высокий риск ошибок
Как нужно сразу:
function canManage(User $user): bool
{
return in_array($user->role, ['admin', 'manager', 'owner'], true);
}
if (canManage($user)) {
allowAccess();
}