Bonjour à tous.
Je (nous, en tant qu'entreprise) finissons la plateforme du fournisseur, la plateforme est un plugin pour WordPress. Je ne connais le frontend, JS, HTML que dans la mesure où, par conséquent, les solutions ci - dessus peuvent ne pas être alphabétisées, mais l'essence de l'article n'est pas cela .
L'essentiel est de démontrer clairement pourquoi parfois au lieu de deux lignes de code, ce serait la bonne décision d'écrire deux cents.
Développeurs débutants et développeurs expérimentés pour qui une telle pensée semble douteuse, je demande sous cat.
Présentation
La lecture de l'article sans lire les commentaires dans le code n'a pas de sens, car les commentaires dans le code ne sont pas dupliqués dans le texte de l'article et le texte de l'article implique que le lecteur a lu les commentaires.
Défi
Il était nécessaire d'apporter des modifications à JS, je fais les modifications dans des fichiers séparés, afin que le moins possible "pollue" le code source du fournisseur de la plateforme, donc à l'avenir il sera plus facile d'adapter les mises à jour des sources de la plateforme.
Par conséquent, le code de la nouvelle fonctionnalité se trouve dans de nouveaux fichiers qui doivent être chargés sur la page.
Tâche: il est nécessaire de charger certains fichiers lors du chargement de la page.
La première crêpe est grumeleuse
+<script src="e-cryptex.js"></script> +<script src="wp-content/themes/tol-child/js/child_realforex.js"></script>
(les lignes avec "+" sont de nouvelles lignes dans le code source)
La solution a été testée pour la page principale et cela a fonctionné là-bas, plus tard, il s'est avéré que pour les pages avec l'adresse example.com/about, la solution n'a pas fonctionné, car le navigateur essayait de charger example.com/about/e-cryptex.js et le navigateur a reçu une erreur 404 , car le fichier était vraiment à la racine - example.com/e-cryptex.js.
Deuxième option
J'ai regardé comment les développeurs de la plateforme s'accrochent à la page:
wp_register_script(FILE-ID,FILE-PATH); wp_enqueue_script(FILE-ID);
Les fichiers sont joints en utilisant la fonctionnalité WordPress - ok, faisons de même:
(les lignes avec "+" sont de nouvelles lignes dans le code source, les lignes avec "-" sont des lignes supprimées du code source).
Vérifié - fonctionne, env.
Il y avait deux lignes - c'est devenu 12, toutes dans le même fichier.
Refactoring
J'ai regardé ce code et mon sens de la beauté s'est rebellé:
- une personne qui ne connaît pas WordPress ne comprendra rien - vous devez aller dans le répertoire pour comprendre le but des fonctions wp_register_script () et wp_enqueue_script ()
- évidemment la même chose se fait deux fois de suite, les arguments ne sont que différents - DRY est violé
Ok, refactor.
Premièrement, nous créons une classe (un fichier), et deuxièmement, nous connectons et utilisons la classe (nous changeons un autre fichier).
Faire de la classe
+class Migesco { + + const SCRIPT = 'script'; + const SOURCE = 'source'; + const DEPENDENCY = 'dependency'; +
Nous nous connectons et utilisons
<?php
Il y avait 12 lignes de codes sources dans un fichier, il y en avait 35, et dans deux (soutenez-le plus tard, cherchez des troncs où corriger, afin de ne rien oublier, de ne pas manquer, de ne pas manquer).
Et refactoring à nouveau
Regardé le nouveau code:
- quelques méthodes statiques
- quelques constantes ...
semble maladroit! Je me souviens du conseil suivant: "si le constructeur n'a pas d'arguments, une telle classe est-elle nécessaire?"
Refaisons, mais une classe normale, avec un constructeur et des méthodes normaux.
Classe
Utiliser
<?php
Vous pouvez refaire le refactoring (la plate-forme fonctionne sur PHP 5.6 - j'adorerais définir les types partout, mais malheureusement vous ne pouvez pas, vous pouvez rendre la classe Configurator statique plus humaine, par exemple, initialiser à partir d'une liste de fichiers - ressources Web et méthode attachFiles statique), mais les choses idéales pour un monde idéal, nous vivons dans le réel, et il fait ses propres corrections - le temps passé sur la tâche - le travail sur la tâche est arrêté.
Total: il y avait 35 lignes dans la source dans deux fichiers, elle est devenue ~ 170, également dans deux fichiers.
Qu'avons-nous obtenu?
- Maintenant, vous n'avez plus besoin d'accéder à l'aide de WordPress pour comprendre le but des paramètres "fonctions".
- Nous avons maintenant un wrapper pour connecter les fichiers et nous pouvons changer sans peine l'algorithme de connexion des fichiers - nous n'aurons pas à modifier tous les appels à wp_register_script et wp_enqueue_script
- Maintenant, nous pouvons changer WordPress en n'importe quoi et seule la classe devra réécrire
Registrar, pas besoin de remplacer tous les appels wp_register_script et wp_enqueue_script et de suivre la logique WordPress.
Cela en valait-il la peine?
Chacun a sa propre approche pour prendre en charge la base de code et sa propre opinion.
Ma réponse est oui.