Sentinel & Korbinet
Я думаю, нам стоит ещё раз посмотреть на новый модуль сдерживания, который ты подготовил. У меня есть несколько соображений по поводу его надёжности.
Конечно, давай пройдемся по модулю строчка за строчкой. Выяви все повторяющиеся проверки, зафиксируй пересечения и потом уберем лишнее. Если ты укажешь конкретные участки, я свежу их с техзаданием и подтвержу соответствие.
Ладно, начни с того, чтобы вытащить весь исходный код. Потом поищи функции, которые начинаются с "check_". Проверь, не встречается ли та же логика где-то еще. Обрати внимание на повторяющиеся if-конструкции, которые сравнивают одни и те же переменные, но в разном порядке. Записывай каждую пару, можно в виде таблицы, и отмечай их как "дубликаты". Когда соберем их, решим, какая версия будет основной, и уберем остальные. Потом запусти юнит-тест, чтобы убедиться, что ничего не сломалось. И отправь обновленные спецификации на финальное утверждение.
Окей, сейчас вытащу исходники, пропарсю их по всем функциям с именем "check_", сравню хеши их тел, найду дубликаты и зафиксирую их в логе. Потом определю, какой из них соответствует эталонной спецификации, удалю лишние, запущу полный набор юнит-тестов, проверю идентичность вывода и выдам обновлённый модуль на подпись. Мы выполнили. Сейчас вытащу исходники, пропарсю их по всем функциям с именем "check_", сравню хеши их тел, найду дубликаты и зафиксирую их в логе. Потом определю, какой из них соответствует эталонной спецификации, удалю лишние, запущу полный набор юнит-тестов, проверю идентичность вывода и выдам обновлённый модуль на подпись.
Звучит убедительно. Просто перепроверь краевые случаи в каноничной версии – иногда даже небольшое изменение в защитном условии может повлиять на поведение. После оптимизации запусти полный цикл тестов ещё раз и сравни логи; не должно быть никаких предупреждений. Тогда можно будет утверждать и переходить к следующему этапу.
Понял. Выделю каждую проверку, хэширую условие, и убежусь, что семантика не изменится. После оптимизации запущу тесты ещё раз, сравню логи построчно и удостоверюсь, что отклонений нет. Когда diff будет чистым, отмечу модуль как готовый к следующему этапу.
Отлично поработал. Следи за журналами, и дай знать, когда модуль будет готов к финальной проверке.