Der Titel sagt alles. Mein Unternehmen verwendet ein älteres Firmware-Projekt für ein Mikrocontroller-Gerät, das vollständig in C geschrieben ist.
Es gibt Teile, die offensichtlich falsch sind und geändert werden müssen, und die aus einem C # / TDD-Hintergrund stammen. Ich mag die Idee nicht, Dinge ohne Tests zufällig umzugestalten, um sicherzustellen, dass die Funktionalität unverändert bleibt. Ich habe auch gesehen, dass schwer zu findende Fehler in vielen Fällen durch geringste Änderungen eingeführt wurden (was meiner Meinung nach behoben werden würde, wenn Regressionstests verwendet würden). Es muss sehr sorgfältig vorgegangen werden, um diese Fehler zu vermeiden: Es ist schwierig, eine Reihe von Globals um den Code herum zu verfolgen.
Zusammenfassen:
- Wie können Sie vor dem Refactoring Unit-Tests zu vorhandenem eng gekoppeltem Code hinzufügen?
- Welche Tools empfehlen Sie? (weniger wichtig, aber trotzdem schön zu wissen)
Ich bin nicht direkt am Schreiben dieses Codes beteiligt (meine Verantwortung ist eine App, die auf verschiedene Weise mit dem Gerät interagiert), aber es wäre schlecht, wenn gute Programmierprinzipien zurückgelassen würden, wenn die Möglichkeit bestünde, dass sie verwendet werden könnten.
quelle
Für Techniken wird das Buch von Michael Feathers in Péter Töröks Antwort wahrscheinlich ziemlich umfassend sein. Wenn Sie nicht zum Buch gehen möchten, schlage ich einen dreistufigen Prozess vor:
Wiederholen Sie diesen Vorgang einige Male, und Sie sollten feststellen, dass die Qualität der Legacy-Codebasis erheblich gestiegen ist.
Beachten Sie, dass C ++ C aufrufen kann, sodass jedes C ++ - Framework für Unit-Tests zum Testen von C-Code verwendet werden kann. Zum Beispiel verwenden wir CPPUnit , um eine Reihe von C-Code in unserem Projekt zu testen.
quelle