Готовы ли вы работать с legacy-кодом?

«Готовы ли вы работать с legacy-кодом?» — вопрос из категории Софт-скиллы, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

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

Моя стратегия:

  1. Сначала анализ: Изучаю код, ищу самые критические точки (например, SQL-инъекции, устаревшие расширения вроде mysql_*).
  2. Изоляция и покрытие: Пытаюсь изолировать самый проблемный модуль и написать для него хотя бы минимальные интеграционные тесты перед изменениями.
  3. Пошаговый рефакторинг: Делаю небольшие, безопасные изменения. Например, заменяю прямой вызов mysql_query на подготовленные запросы с PDO в одном конкретном методе.
// Было (legacy)
$result = mysql_query("SELECT * FROM users WHERE id=" . $_GET['id']);

// Стало (после рефакторинга)
$pdo = new PDO($dsn, $user, $pass);
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute([':id' => (int)$_GET['id']]);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

Такой подход минимизирует риски и постепенно приводит код к современным стандартам.