Meine Faustregel lautet: Wenn ich zum dritten Mal etwas tun muss, ist es Zeit, entweder ein kleines Skript zu schreiben, um es zu automatisieren, oder meinen Ansatz zu überdenken.
Ich mache derzeit kein vollständiges "Tool", sondern nur ein kleines Skript (normalerweise Bash oder Python; Perl würde auch funktionieren oder sogar PHP), das das automatisiert, was ich zuvor manuell gemacht habe. Es ist im Grunde eine Anwendung des DRY-Prinzips (oder des Single Source Of Truth-Prinzips, das im Wesentlichen dasselbe ist) - wenn Sie zwei Quelldateien gleichzeitig ändern müssen, muss es eine gemeinsame Wahrheit geben, die sie teilen, und das Die Wahrheit muss herausgerechnet und an einem zentralen Ort aufbewahrt werden. Es ist großartig, wenn Sie dies intern durch Refactoring lösen können, aber manchmal ist dies nicht möglich, und hier kommen die benutzerdefinierten Skripte ins Spiel.
Später kann sich das Skript möglicherweise zu einem vollständigen Tool entwickeln oder auch nicht, aber ich beginne normalerweise mit einem sehr spezifischen Skript, in dem viele Dinge fest programmiert sind.
Ich hasse leidenschaftliche Grunzarbeit, bin aber auch der festen Überzeugung, dass dies ein Zeichen für schlechtes oder falsches Design ist. Faul sein ist eine wichtige Eigenschaft eines Programmierers, und es ist die Art, in der man lange durchläuft, um sich wiederholende Arbeiten zu vermeiden.
Sicher, manchmal ist der Kontostand negativ - Sie verbringen drei Stunden damit, Ihren Code zu überarbeiten oder ein Skript zu schreiben, um eine Stunde sich wiederholender Arbeit zu sparen. In der Regel ist der Saldo jedoch positiv. Dies gilt umso mehr, wenn Sie Kosten berücksichtigen, die nicht direkt ersichtlich sind: menschliches Versagen (Menschen sind bei sich wiederholenden Arbeiten wirklich schlecht), kleinere Codebasis, bessere Wartbarkeit aufgrund reduzierter Redundanz, bessere Selbstdokumentation, schnellere Zukunft Entwicklung, sauberer Code. Also selbst wenn der Rest erscheint negativ jetztwächst die Codebasis weiter und das Tool, das Sie zum Generieren von Webformularen für drei Datenobjekte geschrieben haben, funktioniert immer noch, wenn Sie über 30 Datenobjekte verfügen. Nach meiner Erfahrung wird das Gleichgewicht in der Regel zugunsten von Grunzarbeit geschätzt, wahrscheinlich, weil sich wiederholende Aufgaben leichter abschätzen und damit unterschätzen lassen, während Umgestaltungen, Automatisierungen und Abstraktionen als weniger vorhersehbar und gefährlicher und damit überschätzbar empfunden werden. Normalerweise stellt sich heraus, dass die Automatisierung gar nicht so schwer ist.
Und dann besteht die Gefahr, dass es zu spät ist: Es ist einfach, drei brandneue Datenobjektklassen in Form zu bringen und ein Skript zu schreiben, das Webformulare für sie generiert. Wenn Sie dies getan haben, können Sie auf einfache Weise 27 weitere Klassen hinzufügen arbeite auch mit deinem script. Es ist jedoch nahezu unmöglich, dieses Skript zu schreiben, wenn Sie an einem Punkt angelangt sind, an dem es 30 Datenobjektklassen gibt, von denen jede handgeschriebene Webformulare enthält und zwischen denen keine Konsistenz besteht (auch als "organisches Wachstum" bezeichnet). Die Aufrechterhaltung dieser 30 Klassen mit ihren Formularen ist ein Alptraum für sich wiederholendes Codieren und halb-manuelles Suchen-Ersetzen. Das Ändern gemeinsamer Aspekte dauert dreißig Mal so lange wie es sollte, aber das Schreiben eines Skripts, um das Problem zu lösen. Was zu Beginn des Projekts eine Mittagspause gewesen wäre, ist jetzt ein schreckliches zweiwöchiges Projekt mit der beängstigenden Aussicht auf einen einmonatigen Zeitraum, der darin besteht, Fehler zu beheben, Benutzer zu unterrichten und möglicherweise sogar aufzugeben und auf das Programm zurückzugreifen alte Codebasis. Ironischerweise dauerte das Schreiben des 30-Klassen-Chaos viel länger als die saubere Lösung, weil Sie die ganze Zeit das bequeme Skript hätten verwenden können. Nach meiner Erfahrung ist die zu späte Automatisierung von sich wiederholenden Arbeiten eines der Hauptprobleme bei langen, umfangreichen Softwareprojekten. weil Sie die ganze Zeit das bequeme Skript gefahren haben könnten. Nach meiner Erfahrung ist die zu späte Automatisierung von sich wiederholenden Arbeiten eines der Hauptprobleme bei langen, umfangreichen Softwareprojekten. weil Sie die ganze Zeit das bequeme Skript gefahren haben könnten. Nach meiner Erfahrung ist die zu späte Automatisierung von sich wiederholenden Arbeiten eines der Hauptprobleme bei langen, umfangreichen Softwareprojekten.