Название говорит само за себя. Моя компания повторно использует устаревший проект прошивки для устройства с микроконтроллером, полностью написанный на простом C.
Есть части, которые явно не соответствуют действительности и нуждаются в изменении, и исходят из опыта C # / TDD. Мне не нравится идея случайного рефакторинга без тестов, чтобы гарантировать, что функциональность останется неизменной. Кроме того, я видел, что трудно найти ошибки, которые были внесены во многих случаях из-за малейших изменений (что, я считаю, было бы исправлено, если бы использовалось регрессионное тестирование). Чтобы избежать этих ошибок, нужно быть очень осторожным: трудно отследить кучу глобальных переменных вокруг кода.
Подвести итоги:
- Как добавить модульные тесты в существующий тесно связанный код перед рефакторингом?
- Какие инструменты вы рекомендуете? (менее важно, но все же приятно знать)
Я непосредственно не участвую в написании этого кода (моя ответственность - приложение, которое будет взаимодействовать с устройством различными способами), но было бы плохо, если бы остались хорошие принципы программирования, если бы была возможность их использовать.
Для техники, вероятно, Майкл Перья бронирование в ответ Петера Török в будет довольно исчерпывающим. Если вы не хотите идти в книгу, я предлагаю трехэтапный процесс:
Повторите этот процесс несколько раз, и вы обнаружите, что качество устаревшей базы кода значительно возросло.
Что касается инструментов, обратите внимание, что C ++ может вызывать C, поэтому любая среда модульного тестирования C ++ может использоваться для тестирования кода C. Например, мы используем CPPUnit для модульного тестирования группы кода C в нашем проекте.
источник