El título lo dice todo. Mi compañía está reutilizando un proyecto de firmware heredado para un dispositivo de microcontrolador, escrito completamente en letra C.
Hay partes que obviamente están mal y que necesitan ser cambiadas, y que provienen de un fondo C # / TDD. No me gusta la idea de refactorizar aleatoriamente cosas sin pruebas para asegurarnos que la funcionalidad permanezca sin cambios. Además, he visto que los errores difíciles de encontrar se introdujeron en muchas ocasiones a través de cambios mínimos (que es algo que creo que se solucionaría si se usaran pruebas de regresión). Se debe tener mucho cuidado para evitar estos errores: es difícil rastrear un montón de globales alrededor del código.
Para resumir:
- ¿Cómo agrega pruebas unitarias al código existente estrechamente acoplado antes de refactorizar?
- ¿Qué herramientas me recomiendan? (menos importante, pero aún así es bueno saberlo)
No estoy directamente involucrado en escribir este código (mi responsabilidad es una aplicación que interactuará con el dispositivo de varias maneras), pero sería malo si se dejaran atrás los buenos principios de programación si existiera la posibilidad de que pudieran usarse.
fuente
Para las técnicas, probablemente el libro de Michael Feathers en la respuesta de Péter Török será bastante completo. Si no quieres ir al libro, te sugiero un proceso de tres pasos:
Repita este proceso varias veces, y debería encontrar que la calidad de la base de código heredada ha aumentado significativamente.
En cuanto a las herramientas, tenga en cuenta que C ++ puede llamar a C, por lo que cualquier marco de pruebas unitarias de C ++ se puede utilizar para probar el código C. Por ejemplo, estamos usando CPPUnit para probar un montón de código C en nuestro proyecto.
fuente