По моему опыту картина такова:
- Система работает, часто годами
- Об ошибке сообщается
- Разработчик исследует ошибку и находит немного кода, который кажется совершенно ошибочным, и заявляет, что он "никогда не работал"
- Ошибка исправляется, и растет легенда о коде, который никогда не работал (но работал годами)
Давайте будем логичны здесь. Код, который никогда бы не сработал ... никогда бы не сработал . Если он сделал работу , то утверждение ложно.
Итак, я собираюсь сказать, что ошибка, точно описанная (то есть наблюдение некорректного кода, перестает его работать), явно бессмысленна.
В действительности то, что произошло, - это одна из двух вещей:
1) Разработчик не полностью понял код . В этом случае код обычно является беспорядком, и где-то в нем есть большая, но неочевидная чувствительность к некоторому внешнему условию (скажем, конкретная версия ОС или конфигурация, которая определяет, как какая-то функция работает незначительным, но значимым образом). Это внешнее условие изменяется (скажем, при обновлении или изменении сервера, которое считается несвязанным), и при этом код нарушается.
Затем разработчик просматривает код и, не понимая исторического контекста или не имея времени для отслеживания всех возможных зависимостей и сценариев, заявляет, что он никогда не сможет работать, и переписывает его.
В этой ситуации нужно понимать, что идея о том, что «это никогда не могло бы сработать», доказуемо ложна (потому что она сработала).
Это не значит, что переписывать - это плохо, часто это не так, хотя приятно знать, что именно не так, часто это отнимает много времени, и переписывание фрагмента кода часто происходит быстрее и позволяет вам быть уверенным, что вы исправили ошибки.
2) На самом деле это никогда не работало, просто никто никогда не замечал . Это удивительно часто, особенно в больших системах. В этом случае кто-то новый начинает и начинает смотреть на вещи так, как никто не делал раньше, или на изменения бизнес-процесса, которые привносят какой-то ранее незначительный крайний случай в основной процесс, и что-то, что действительно никогда не работало (или работало с некоторыми, но не со всеми время) найдено и сообщено.
Разработчик смотрит на это и заявляет, что «это никогда не могло бы сработать», но пользователи говорят: «ерунда, мы использовали это годами», и они в некотором роде правы, но считают, что это неуместно (и обычно не упоминают до разработчик находит точное условие , при котором указывают они идут «о да, мы делаем , что в настоящее время и не делали раньше») изменилось.
Здесь разработчик прав - он никогда не мог работать и никогда не работал.
Но в любом случае одна из двух вещей верна:
- Утверждение «это никогда не сработало» верно и никогда не сработало - люди просто думали, что это сработало
- Это сработало, и утверждение «это никогда не могло бы сработать» является ложным и объясняется (как правило, разумным) отсутствием понимания кода и его зависимостей.