Einfaches Refactoring von WordPress-basiertem Code
Im Jahr 2011 habe ich viel über die Arbeit mit Legacy-Code, Codequalität und Refactoring gelesen.
Es gibt ein Zitat von Martin Fowler (der buchstäblich das Buch über Refactoring geschrieben hat), das Onkel Bob zugeschrieben wird und das mir – und ich bin sicher, vielen, vielen Programmierern – seither in Erinnerung geblieben ist:
Lassen Sie den Code immer in einem besseren Zustand zurück, als Sie ihn vorgefunden haben
Die Sache mit dieser speziellen Idee ist, dass sie meiner Meinung nach etwas idealistischer klingen könnte, bis Sie wirklich versuchen, sie bei allem, was Sie tun, zu praktizieren.
Das heißt, wenn Sie es für bare Münze nehmen, klingt es so, als müssten Sie jedes Mal, wenn Sie an einer Codebasis arbeiten müssen, die gesamte Codebasis besser hinterlassen, als Sie sie vorgefunden haben. Aber je mehr ich versucht habe, diese Regel in meiner täglichen Arbeit anzuwenden, desto praktischer, sauberer und wartbarer wurde WordPress-spezifischer Code.
Wie sieht das also aus, wenn es um das Refactoring von WordPress-basiertem Code geht?
Das wird kein langer Beitrag. Stattdessen werde ich einfach ein paar Stichpunkte teilen, denen ich folge, wenn es darum geht, an Code zu arbeiten, den ich zuvor geschrieben habe, den ich von anderen kenne oder der aus einer Codebasis stammt, an der ich mit anderen in der gearbeitet habe vorbei an.
In keiner bestimmten Reihenfolge:
- Seien Sie nicht idealistisch; Seien Sie praktisch. Das Umgestalten einer gesamten Codebasis ist nicht praktikabel, insbesondere wenn die Codebasis nicht in Einheitentests eingeschlossen ist. Sehen Sie sich den Code an, an dem Sie arbeiten, und prüfen Sie, welche geringfügigen Änderungen Sie vornehmen können, um ihn zu verbessern.
- Verwenden Sie die neuesten Standards. Sie müssen keine komplett neue Entwicklungsumgebung für älteren Code einrichten. Stellen Sie stattdessen einfach sicher, dass Sie über gute Code-Sniffer verfügen. Wenn Sie von den WordPress-Codierungsstandards zu PSR gewechselt sind, sehen Sie sich die Warnungen oder Hinweise an, die die Sniffer ausgeben, und versuchen Sie, den Code nur in dieser Datei (oder diesem Satz von Dateien) zu aktualisieren.
- Hilfsfunktionen schreiben. Wenn Ihre Funktionen zu lang sind, suchen Sie nach Möglichkeiten, die Arbeit mit ihnen zu vereinfachen. Aktualisieren Sie zuerst alle Kontrollstrukturen wie Schleifen oder Bedingungen und schreiben Sie dann Hilfsfunktionen, um diese leichter lesbar zu machen.
- Tests hinzufügen (wenn möglich). Wenn Sie bereits über ein Komponententest-Framework verfügen, fügen Sie Tests für Ihren neuen Code hinzu. Wenn Sie nicht die Zeit oder den Rahmen haben, schwitzen Sie nicht. So sehr pragmatische Programmierer es auch predigen, es bleibt nicht immer Zeit, Tests hinzuzufügen. (Dies soll keine Aussage sein, dass sie nicht nützlich sind oder nicht enthalten sein sollten, aber dass es nicht immer praktisch ist, sie zu einem bestimmten Zeitpunkt zu integrieren).
Einige der Dinge, die ich in den letzten Projekten getan habe, beinhalten auch einfache Dinge:
- Aktualisieren von Variablen- und Funktionsnamen, um PSR zu folgen,
- Tabulatoren in Leerzeichen umwandeln,
- Hinzufügen von Hilfsfunktionen, um Bedingungen und Schleifen besser lesbar zu machen,
- Klassen aufteilen, um einen höheren Zusammenhalt zu haben,
- Verbessern Sie die Docblocks jeder Funktion
Dies sind nur einige Beispiele, und dies ist eindeutig keine vollständige Liste. Aber das ist nicht der Punkt. Stattdessen möchte ich einfach mitteilen, wie Sie das Refactoring von WordPress-basiertem Code anwenden können, während Sie Ihre tägliche Arbeit auf überschaubare Weise erledigen.
Alle oben genannten Änderungen oder Empfehlungen sind Dinge, die normalerweise mit Hilfe der IDE, ein paar Abkürzungen und vielleicht einer halben Stunde zusätzlicher Zeit durchgeführt werden können (und ich bin mit dieser Schätzung großzügig).
Also, nein, Sie müssen nicht eine ganze Codebasis neu schreiben. Ich weiß nicht einmal, ob das ein praktisches Ziel ist, das man anstreben sollte. Aber Sie können ein kleines Stück des Gesamtsystems reparieren, für das Sie verantwortlich sind?
Und warum nicht zumindest darauf abzielen?