Regressionstests
Es geht nur um Regressionstests .
Stellen Sie sich vor, der nächste Entwickler betrachtet Ihre Methode und merkt, dass Sie magische Zahlen verwenden. Ihm wurde gesagt, dass magische Zahlen böse sind, also erstellt er zwei Konstanten, eine für die Nummer zwei, die andere für die Nummer drei - es ist nichts Falsches daran, diese Änderung vorzunehmen; Es ist nicht so, als würde er Ihre bereits korrekte Implementierung modifizieren.
Abgelenkt kehrt er zwei Konstanten um.
Er schreibt den Code fest, und alles scheint gut zu funktionieren, da nach jedem Festschreiben keine Regressionstests ausgeführt werden.
Eines Tages (könnte Wochen später sein) bricht irgendwo etwas zusammen. Und anderswo meine ich den völlig entgegengesetzten Ort der Codebasis, der nichts mit polynominal
Funktion zu tun zu haben scheint . Stunden schmerzhaftes Debuggen führen zum Täter. Während dieser Zeit fällt die Anwendung in der Produktion weiterhin aus, was Ihren Kunden viele Probleme bereitet.
Das Beibehalten der ursprünglichen Tests, die Sie geschrieben haben, kann solche Schmerzen verhindern. Der abgelenkte Entwickler gab den Code ein und stellte fast sofort fest, dass er etwas kaputt gemacht hatte. Ein solcher Code wird nicht einmal die Produktion erreichen. Unit-Tests werden außerdem den Ort des Fehlers sehr genau beschreiben . Es wäre nicht schwierig, es zu lösen.
Ein Nebeneffekt...
Tatsächlich basieren die meisten Umgestaltungen stark auf Regressionstests. Nehmen Sie eine kleine Änderung vor. Prüfung. Wenn es geht, ist alles in Ordnung.
Der Nebeneffekt ist, dass, wenn Sie keine Tests haben, praktisch jedes Refactoring ein großes Risiko darstellt, den Code zu brechen. Da dies in vielen Fällen der Fall ist, ist es bereits schwierig, dem Management zu erklären, dass das Refactoring durchgeführt werden sollte. Dies ist sogar noch schwieriger, nachdem bei Ihren vorherigen Refactoring-Versuchen mehrere Fehler aufgetreten sind.
Wenn Sie über eine vollständige Testsuite verfügen, fördern Sie das Refactoring und damit einen saubereren Code. Ohne Risiko wird es sehr verlockend, regelmäßig mehr zu refactern.
Änderungen der Anforderungen
Ein weiterer wesentlicher Aspekt ist, dass sich die Anforderungen ändern. Möglicherweise werden Sie aufgefordert , komplexe Zahlen zu verarbeiten , und plötzlich müssen Sie in Ihrem Versionskontrollprotokoll nach den vorherigen Tests suchen, diese wiederherstellen und neue Tests hinzufügen.
Warum all diese Probleme? Warum Tests entfernen, um sie später hinzuzufügen? Sie hätten sie an erster Stelle behalten können.