In unserer Softwareumgebung führen wir häufig A / B-Tests durch, wie dies wahrscheinlich eine gute Praxis ist. Unsere Umgebung ist jedoch so eingerichtet, dass der Code in sehr kurzer Zeit mit toten Tests sehr mürrisch wird. Die Testregistrierung ist kaum mehr als eine Sammlung interner Wiki-Seiten.
Ich dachte an einen "Dead Man's Switch" -Stil für nicht mehr funktionierendes Code-Management. Wenn Sie mit dem Begriff nicht vertraut sind, bezieht er sich auf einen Schalter, der regelmäßig zurückgesetzt werden muss, damit nichts ausgelöst wird. Wenn Sie nicht reagieren, wird der Schalter ausgelöst und was auch immer Sie möchten Trigger wird ausgeführt.
Zum Beispiel würde ich einen Code schreiben, ihn auf irgendeine Weise bei diesem System registrieren und wenn ein Datum meiner vorher festgelegten Auswahl herumläuft, würde ich eine Benachrichtigung erhalten, dass dieser Code entfernt (automatisch bereinigt) wird, wenn ich nicht eingreife (manuell) aufräumen oder ein Nickerchen machen).
Was sind die Vor- und Nachteile und die Realisierbarkeit eines solchen Systems? Ist es möglich oder weise? Was könnten alternative Möglichkeiten sein, um Code gegen Fäulnis zu verwalten?
quelle
Antworten:
Ich würde mir Sorgen um ein System machen, das Code automatisch entfernt . Wenn Ihr Team nicht sehr gut diszipliniert ist, kann ich dies nur als Weg zu Tränen und Schmerz sehen. Dinge passieren: Leute machen Urlaub, werden krank, verlassen das Unternehmen, vergessen, was der Code abläuft, der abläuft, ... und wenn der Code automatisch bereinigt wird, klingt das so, als würde er alle Arten von Ärger verursachen. Sie müssen sicherstellen, dass zwischen diesen Modulen keine Compiler-Abhängigkeiten bestehen, da sie sonst plötzlich nicht mehr kompiliert werden können, wenn etwas, von dem sie abhängen, abgelaufen ist. Und vergessen Sie nicht, was passieren würde, wenn jemand im Produktionssupport an einem älteren Trouble Ticket arbeitet und der Stack-Trace in der Fehlermeldung auf den gelöschten Code verweist. Und das würde auch nicht dazu führen, dass Leute, die Audits machen, passieren, stelle ich mir vor ...
Etwas, das sicherer sein könnte, ist ein Framework, in dem Ihre kleinen Codemodule nach einem Aktivierungs- und einem Deaktivierungsdatum fragen können. Wenn der Code ausgeführt werden soll, prüft er in einer Datenbank, welche Datumsangaben vorliegen. Wenn das aktuelle Datum zwischen dem Aktivierungs- und Deaktivierungsdatum liegt, lässt Ihr Framework die Ausführung des Codes zu. Wenn Sie diese Daten in einer Datenbank speichern, können Sie problemlos ein Skript schreiben, das einen Bericht über alle Module generiert, die in den nächsten n Tagen ablaufen , und ihn per E-Mail an Sie senden, damit er am Montagmorgen als erstes in Ihrem Posteingang angezeigt wird.
quelle
Dieses System führt zu einem Problem verwaister Tests: Wenn jemand, der eine Reihe von Tests und einen damit verbundenen Produktionscode geschrieben hat, das Unternehmen verlässt, besteht die Gefahr, dass die Tests vorzeitig entfernt werden, wenn der neue Eigentümer weggelassen wird.
Ich denke nicht, dass "zu viele Tests" ein Problem sind: Solange die Tests automatisiert sind, beschränkt sich Ihr Abfall hauptsächlich auf die CPU-Stunden, was im Vergleich zu den Arbeitsstunden eine kleine Änderung darstellt. Ein Test, der automatisch über den Schalter des Toten entfernt wird, kann Fehler auffangen, die andernfalls in der Produktion landen und später zu schwerwiegenden Wartungsproblemen führen.
Ich denke, Sie können eine prozessbasierte Alternative erstellen, indem Sie eine Registrierung erstellen, in der Testsuiten mit Modulen Ihres Codes gepaart werden. Jedes Mal, wenn eine Wartung an einem Modul durchgeführt wird, muss für den Prozess entschieden werden, ob die entsprechende Testsuite beibehalten, entfernt oder aktualisiert werden soll. Da es sich um eine reine Buchhaltung handelt, besteht keine Gefahr, dass Code automatisch aus der Liste entfernt wird.
quelle
Ich habe lange Zeit einfache Kalenderbenachrichtigungen verwendet (unabhängig davon, welche Kalendersoftware Ihr Unternehmen verwendet, sollte ausreichen), bei der ich sie einfach so eingestellt habe, dass sie mich zu jeder Zeit benachrichtigt, und alle erforderlichen Informationen eingefügt habe, vorausgesetzt, ich habe zum Zeitpunkt der Benachrichtigung alles vergessen.
Ein SSL-Zertifikat installieren? Schauen Sie sich das Ablaufdatum an, legen Sie ein Kalenderereignis für mich fest (und einen Manager und einen anderen Ingenieur, falls einer oder zwei von uns drei nicht mehr im Unternehmen sind, was passiert ist), 2 Monate zuvor, um mit dem Auslösen des Ereignisses zu beginnen Alarm für wen auch immer, dass es ersetzt werden muss, geben Sie für den Fall, dass die Kontaktinformationen für die Personen, von denen wir das Zertifikat erhalten haben, die spezifischen Orte, an denen das Zertifikat verwendet wird, und Einzelheiten zu systemischen Auswirkungen des Ablaufs des Zertifikats an (möglicherweise handelt es sich um ein totes System und das Zertifikat) sollte ablaufen, wenn diese Zeit gekommen ist).
Die automatische Codeänderung ist eine geradezu schreckliche, gefährliche Idee. Alles, was Sie tun müssen, ist, Ihren Kalender mit Bedacht zu verwenden, um sicherzustellen, dass Sie über zeitkritische Dinge informiert werden, wenn deren Zeit relevant wird. Genau dafür sind Kalender gedacht. Wenn Sie nun das Problem haben, zeitkritische Ereignisse nicht verantwortungsbewusst zu beachten, haben Sie meines Erachtens ein ganz anderes Problem, nach dem Sie am Arbeitsplatz fragen möchten .
quelle
Klingt wie eine sehr schlechte Idee, denn später Code wird auf diese Änderungen ab. Das automatische Zurückrollen verursacht weit verbreitete Schäden.
Schreiben Sie Ihre Tests stattdessen als automatisierte (Einheits-) Tests und führen Sie sie jede Nacht aus.
quelle