Война и мир как полигон для багфиксов
Доброго всем времени суток.
Попался вот мне на глаза такой отрывочек, с привкусом легкого баяна:
На мой взгляд, программист тут достаточно неверно подошел к решению вопроса :) Сейчас попытаюсь наглядно разобрать пример с моей точки зрения.
Итак, есть конкретная забагованая последовательность событий, приводящая к вылету.
Тут несколько ключевых позиций:
1. падение Пьера
2. самопроизвольный выстрел
3. рикошет от столба
Что вообще тут можно было бы сделать? Поехали пошагово дебажить:
В пункте 1: выдать Пьеру в инвентарь нормальные туфли по погоде. Плюсы: человеку удобно, минимальная вероятность падения, ничего вокруг не затронуто. Минусов нет
В пункте 2: исходная копипаста отмечает факт самопроизвольного выстрела, но явно был еще факт выпадения пистолета из кармана либо из-за пояса. Оба пункта немного кривые. Тут можно было бы улучшить размещение пистолета на теле (более надежная и удобная кобура, либо усовершенствовать карман, либо заставить мудака, насмотревшегося боевиков, вытащить пистолет из-за пояса и использовать наконец кобуру или карман!).
Либо еще вариант - прокачивание конструкции пистолета, фикс исключающий самопроизвольный выстрел при ударах. Это уже чуть сложнее и масштабнее, но почему бы и нет
Для пункта 3 имеем: столб вероятнее всего - часть парковой инфраструктуры, фонарь там, телеграф, мало ли. И судя по тому, что ранее на него жалоб не поступало - он установлен правильно, свое назначение выполняет, никому не мешает гулять и прочее. То есть, с вероятностью 95% это НЕ БАГ, и трогать тут ничего не нужно вообще!
Рикошет - тут уже сложнее. Вроде бы физика окружения, вроде бы даже работает, вроде бы даже корректно. Можно ли было избежать трагедии как-то? Можно, например, зарядив пистолет патронами с пулей другого типа, менее склонной к рикошетам (но НЕ ХОЛОСТЫМИ, как предлагалось в исходном отрывке, потому что в этом случае пистолет превращается в бесполезную железяку и перестает выполнять свое назначение - то есть ломаем функционал). Только нужно озаботиться этим чуть ранее по тексту - чтобы Пьер успел их найти и купить. Да и к тому же, присутствует далеко ненулевая вероятность того, что выстрел четко в столб с рикошетом прямо в Наташу был единичным случаем в расчетах физического движка, когда все просто очень удачно совпало - и при любых повторных падениях (в т.ч. на продакшене) воспроизвести его будет практически нереально. Нужно больше Пьеров, пистолетов и Наташ в тестовом окружениии, чтобы можно было бы со статистической корректностью тут что-то утверждать.
В общем, к чему я это все веду? Есть много вариантов устранить исходную проблему. Причем самыми логичными и простыми на мой взгляд являются вот эти варианты (по возрастанию сложности):
- с обувью по погоде
- надежной и удобной кобурой под пистолет
- нерикошетящими пулями
Изменения в конструкции пистолета - это уже достаточно глобальный чейндж. Потому что заводы, технология и вот это все.
Вариант про убирание столба попахивает индусским расовым фиксом, потому что по сути нифига не обоснован, потенциально затрагивает много всего вокруг, не чинит, а скрывает исходную проблему, и вдобавок непредсказуемо влияет на происходящее в будущем...
Вывод: программист в исходном тексте либо просто джун, либо лютый индус (как минимум в душе) :)
Скриншот с историей найден где-то на просторах интернета, а вот текст мой