На мій досвід, закономірність така:
- Система працює, часто роками
- Повідомляється про помилку
- Розробник досліджує помилку і знаходить трохи коду, який, здається, є повністю помилковим, і заявляє, що він "ніколи не міг би працювати"
- Помилка виправляється, і легенда про код, який ніколи не міг працювати (але робився роками), зростає
Давайте тут будемо логічними. Код, який ніколи не міг би працювати ... ніколи не міг би працювати . Якщо це все- таки спрацювало, тоді твердження є помилковим.
Тож я хочу сказати, що помилка точно так, як описано (тобто дотримання недосконалого коду перестає працювати) - явно нісенітниця.
Насправді те, що трапилося, - це одна з двох речей:
1) Розробник не повністю зрозумів код . У цьому випадку код звичайно безлад, і десь у ньому є велика, але не очевидна чутливість до якогось зовнішнього стану (скажімо, конкретна версія ОС або конфігурація, яка регулює, як деяка функція працює якимось незначним, але значущим чином). Ця зовнішня умова змінюється (скажімо, оновлення або зміна сервера, які, як вважають, не пов'язані), і тим самим призводить до порушення коду.
Потім розробник дивиться на код і, не розуміючи історичного контексту або не встигаючи простежити всі можливі залежності та сценарій, заявив, що він ніколи не міг би працювати, і переписує його.
У цій ситуації тут слід розуміти, що думка про те, що "це ніколи не могло працювати" є помилково помилковою (тому що це було).
Це не означає, що переписування - це погано - часто це не так, хоча приємно точно знати, що було неправильно, це забирає багато часу та переписує розділ коду, швидше і дозволяє бути впевненим, що ви виправили речі.
2) Насправді це ніколи не працювало, просто ніхто його ніколи не помічав . Це дивно часто, особливо у великих системах. У цьому випадку хтось новий починає і починає дивитись на речі так, як ніхто не робив раніше, або бізнес-процес змінюється, приводячи якийсь раніше незначний крайовий випадок в основний процес, і те, що ніколи насправді не працювало (або працювало дещо, але не все час) знайдено та повідомляється.
Розробник дивиться на це і заявляє, що "це ніколи не могло б працювати", але користувачі кажуть "дурниці, ми використовуємо це роками", і вони начебто правильно, але те, що вони вважають неактуальним (і зазвичай не зазначають до розробник знаходить точне стан в який момент вони йдуть «о так, ми робимо , що в даний час і не робили раніше») змінилися.
Тут розробник має рацію - він ніколи не міг працювати і ніколи не працював.
Але в будь-якому випадку одна з двох речей:
- Твердження «це ніколи не могло працювати» є правдивим і воно ніколи не працювало - люди просто думали, що це робиться
- Це спрацювало, і твердження "він ніколи не міг би працювати" є помилковим і зводиться до (зазвичай розумного) нерозуміння коду та його залежностей.