Hallo an alle.
Ich (wir als Unternehmen) beende die Plattform vom Lieferanten, die Plattform ist ein Plugin für WordPress. Ich kenne das Frontend, JS, HTML nur insoweit, als die oben genannten Lösungen möglicherweise nicht lesen und schreiben können, aber das Wesentliche des Artikels ist nicht das .
Die Quintessenz soll klar zeigen, warum es manchmal die richtige Entscheidung wäre, anstelle von zwei Codezeilen zweihundert zu schreiben.
Anfängliche Entwickler und Entwickler mit Erfahrung, für die ein solcher Gedanke zweifelhaft erscheint, frage ich unter Katze.
Einführung
Das Lesen des Artikels ohne Lesen der Kommentare im Code ist nicht sinnvoll, da die Kommentare im Code nicht im Text des Artikels dupliziert werden und der Text des Artikels impliziert, dass der Leser die Kommentare gelesen hat.
Herausforderung
Es war notwendig, Änderungen an JS vorzunehmen. Ich nehme die Änderungen in separaten Dateien vor, damit der Quellcode des Plattformanbieters so wenig wie möglich "verschmutzt" wird, sodass es in Zukunft einfacher sein wird, die Aktualisierungen der Plattformquellen anzupassen.
Dementsprechend befindet sich der Code der neuen Funktionalität in neuen Dateien, die auf die Seite geladen werden müssen.
Aufgabe: Beim Laden der Seite müssen bestimmte Dateien geladen werden.
Der erste Pfannkuchen ist klumpig
+<script src="e-cryptex.js"></script> +<script src="wp-content/themes/tol-child/js/child_realforex.js"></script>
(Zeilen mit "+" sind neue Zeilen im Quellcode)
Die Lösung wurde für die Hauptseite getestet und funktionierte dort. Später stellte sich heraus, dass die Lösung für Seiten mit der Adresse example.com/about nicht funktionierte, da der Browser versuchte, example.com/about/e-cryptex.js zu laden, und der Browser einen Fehler 404 erhielt , weil sich die Datei wirklich im Stammverzeichnis befand - example.com/e-cryptex.js.
Zweite Option
Ich habe mir angesehen, wie die Plattformentwickler an der Seite festhalten:
wp_register_script(FILE-ID,FILE-PATH); wp_enqueue_script(FILE-ID);
Dateien werden mit der WordPress-Funktionalität angehängt - ok, machen wir dasselbe:
(Zeilen mit "+" sind neue Zeilen im Quellcode, Zeilen mit "-" sind Zeilen, die aus dem Quellcode gelöscht wurden).
Überprüft - funktioniert, ca.
Es gab zwei Zeilen - es wurden 12, alle in derselben Datei.
Refactoring
Ich sah mir diesen Code an und mein Sinn für Schönheit rebellierte:
- Eine Person, die nicht mit WordPress vertraut ist, wird nichts verstehen - Sie müssen in das Verzeichnis gehen, um den Zweck der Funktionen wp_register_script () und wp_enqueue_script () zu verstehen
- Offensichtlich wird dasselbe zweimal hintereinander gemacht, die Argumente sind nur unterschiedlich - DRY wird verletzt
Ok, Refactor.
Erstens erstellen wir eine Klasse (eine Datei) und zweitens verbinden wir die Klasse und verwenden sie (wir ändern eine andere Datei).
Klasse machen
+class Migesco { + + const SCRIPT = 'script'; + const SOURCE = 'source'; + const DEPENDENCY = 'dependency'; +
Wir verbinden und nutzen
<?php
Es gab 12 Zeilen mit Quellcodes in einer Datei, es gab 35 und in zwei (unterstützen Sie es später, suchen Sie nach Amtsleitungen, die Sie sonst reparieren können, um nichts zu vergessen, nicht zu verpassen, nicht zu verpassen).
Und wieder umgestalten
Sah den neuen Code an:
- einige statische Methoden
- einige Konstanten ...
sieht ungeschickt aus! Ich erinnere mich an den folgenden Rat: "Wenn der Konstruktor keine Argumente hat, wird eine solche Klasse benötigt?"
Lassen Sie uns neu erstellen, aber eine normale Klasse mit einem normalen Konstruktor und Methoden.
Klasse
Verwenden Sie
<?php
Sie können das Refactoring erneut durchführen (die Plattform läuft unter PHP 5.6 - Ich würde die Typen gerne überall festlegen, aber leider nicht. Sie können die statische Konfiguratorklasse menschlicher gestalten, z. B. anhand einer Liste von Dateien initialisieren - Webressourcen und die Methode attachFiles statisch), aber die idealen Dinge für eine ideale Welt, wir leben in der Realität, und es nimmt seine eigenen Korrekturen vor - die Zeit, die für die Aufgabe aufgewendet wird - die Arbeit an der Aufgabe wird gestoppt.
Insgesamt: Es gab 35 Zeilen in der Quelle in zwei Dateien, es wurde ~ 170, auch in zwei Dateien.
Was haben wir bekommen?
- Jetzt müssen Sie nicht mehr in die WordPress-Hilfe gehen, um den Zweck der "Funktions" -Parameter zu verstehen.
- Jetzt haben wir einen Wrapper zum Verbinden von Dateien und können den Algorithmus zum Verbinden von Dateien problemlos ändern. Wir müssen nicht alle Aufrufe von wp_register_script und wp_enqueue_script bearbeiten
- Jetzt können wir WordPress in alles ändern und nur die Klasse muss neu schreiben
Registrar, es ist nicht erforderlich, alle Aufrufe von wp_register_script und wp_enqueue_script zu ersetzen und der WordPress-Logik zu folgen.
War es das wert?
Jeder hat seinen eigenen Ansatz zur Unterstützung der Codebasis und seine eigene Meinung.
Meine Antwort lautet ja.