{"id":231138,"date":"2022-12-09T18:12:00","date_gmt":"2022-12-09T15:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231138"},"modified":"2022-12-09T18:41:34","modified_gmt":"2022-12-09T15:41:34","slug":"non-progettare-eccessivamente-la-soluzione","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/non-progettare-eccessivamente-la-soluzione\/","title":{"rendered":"Non progettare eccessivamente la soluzione"},"content":{"rendered":"\n<p>Se provieni da un background orientato agli oggetti o provi a creare tutte le tue soluzioni per WordPress utilizzando tecniche orientate agli oggetti, allora ci saranno momenti in cui potresti sentire come se stessi colpendo un chiodo con una mazza.<\/p>\n<p>Ad esempio, supponiamo che qualcuno venga da te e abbia bisogno di un plug-in personalizzato sviluppato che funzioni con un plug-in di terze parti ma deve solo fare una cosa.<\/p>\n<p>Vale la pena dedicare del tempo alla creazione di <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/classi-astratte-parte-2-classi-astratte-e-interfacce\/\" title=\"un'interfaccia\">un&#8217;interfaccia<\/a><\/strong>, all&#8217;implementazione di detta interfaccia in una classe concreta, alla configurazione degli <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/organizzare-tipi-visualizzazioni-e-abbonati-di-wordpress\/\" title=\"abbonati\">abbonati<\/a><\/strong>, alla <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/una-breve-nota-sul-codice-di-unit-test-nei-progetti-wordpress\/\" title=\"scrittura di unit test\">scrittura di unit test<\/a><\/strong> e cos\u00ec via?<\/p>\n<p>Vedo l&#8217;appello, ma in genere dico di no. Se l&#8217;essenza di ci\u00f2 che devi fare deve includere stili o file JavaScript o entrambi, allora perch\u00e9 non fare affidamento sulle API native di WordPress e sulla programmazione procedurale?<\/p>\n<h2>Non sovra-ingegnerizzare<\/h2>\n<p>Diciamo che un potenziale cliente viene da te che:<\/p>\n<ul>\n<li>sta lavorando con un budget molto limitato,<\/li>\n<li>ha un plug-in di terze parti che non si adatta bene al tema,<\/li>\n<li>ha bisogno solo di uno stile leggero,<\/li>\n<li>e ha i fondi per contrarre te per il lavoro.<\/li>\n<\/ul>\n<p>Supponendo che tutto quanto sopra sia vero, direi che elaborare la soluzione sembra abbastanza semplice, giusto? Abbiamo bisogno di controllare il sito in modo da poter:<\/p>\n<ul>\n<li>determinare la combinazione di colori,<\/li>\n<li>trovare i selettori necessari per il CSS,<\/li>\n<li>quindi inizia a creare il plugin.<\/li>\n<\/ul>\n<p>Ora, quando si tratta di farlo, cerco ancora di utilizzare una manciata di migliori pratiche. Anche se tendo alla programmazione orientata agli oggetti, non la uso sempre n\u00e9 la consiglio sempre.<\/p>\n<p>Invece, penso che l&#8217;utilizzo di una semplice funzione o di un insieme di funzioni agganciate all&#8217;API di WordPress in modo procedurale funzioni perfettamente. Tuttavia, ci\u00f2 non significa che non dovremmo mirare a creare una solida struttura organizzativa dei file perch\u00e9 non si sa mai quando potrebbe essere necessario tornare per mantenere il progetto.<\/p>\n<p>A tal fine, ecco cosa faccio normalmente:<\/p>\n<ul>\n<li>creare una directory degli asset per i fogli di stile e JavaScript (per entrambi o per l&#8217;altro, a seconda di ci\u00f2 che \u00e8 necessario),<\/li>\n<li>creare una directory <strong>src<\/strong> per il codice che sar\u00e0 responsabile dell&#8217;aggancio a WordPress,<\/li>\n<li>aggiungi il solito file bootstrap <strong>LICENSE, README<\/strong> e plug-in.<\/li>\n<\/ul>\n<p>La directory risultante potrebbe assomigliare a questa:<\/p>\n<p>Da l\u00ec, non mi preoccupo nemmeno di un caricatore automatico. Invece, includo i file nella directory di origine. Puoi scorrere quei file invece di fare qualcosa del <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8d4e8a93a673d86f44d39c6e2893530e#file-00-bootstrap-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">genere<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Acme Plugin Example\n *\n * @author    Tom McFarlin &lt;tom@pressware.co&gt;\n * @license   GPL-3.0+\n * @link      https:\/\/pressware.co\n * @since     1.0.0\n * @copyright 2018 Tom McFarlin\n *\n * @wordpress-plugin\n * Plugin Name: Acme Plugin Example\n * Description: Provides consistent styling across the site for certain elements.\n * Version:     1.0.0\n * Author:      Tom McFarlin\n * Author URI:  https:\/\/tommcfarlin.com\n * License:     GPL-3.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\/\n\ninclude_once plugin_dir_path(__FILE__).'src\/AddStyles.php';\ninclude_once plugin_dir_path(__FILE__).'src\/AddScripts.php';\n<\/code><\/pre>\n<p>Ma ci\u00f2 potrebbe dipendere da quando e cosa stai facendo.<\/p>\n<h2>Questo \u00e8 troppo semplice<\/h2>\n<p>Forse. Ecco il punto: ogni volta che una persona si radica nell&#8217;uso di un certo paradigma di programmazione, detta persona cerca di applicarlo ovunque e cerca di farlo tutto il tempo.<\/p>\n<p>Non tutti, ma molti. Me stesso incluso.<\/p>\n<p>E quando ti ritrovi a progettare qualcosa in modo eccessivo, perch\u00e9 non fare un passo indietro e provare a semplificare un po&#8217; il tuo carico di lavoro?<\/p>\n<p>Il problema \u00e8 ancora risolto e lo fa in un modo che ha un sovraccarico significativamente inferiore.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se l&#8217;essenza di ci\u00f2 che devi fare deve includere stili o file JavaScript o entrambi, non progettare una soluzione pi\u00f9 del necessario.<\/p>\n","protected":false},"author":1,"featured_media":236233,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,804,720,865],"tags":[1168],"class_list":["post-231138","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-php-6","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231138"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231138\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236233"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}