{"id":231641,"date":"2022-12-21T11:01:00","date_gmt":"2022-12-21T08:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231641"},"modified":"2022-12-21T11:01:15","modified_gmt":"2022-12-21T08:01:15","slug":"suggerimenti-per-lorganizzazione-del-codice-di-procedura","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/suggerimenti-per-lorganizzazione-del-codice-di-procedura\/","title":{"rendered":"Suggerimenti per l&#8217;organizzazione del codice di procedura"},"content":{"rendered":"\n<p>Per quanto scriva &#8211; e sia un fan della programmazione orientata agli oggetti, non scrivo molto sui tempi in cui lavoro con una <a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">base di codice procedurale<\/a>.<\/p>\n<blockquote>\n<p>La programmazione procedurale \u00e8 un paradigma di programmazione, derivato dalla programmazione strutturata, basato sul concetto di chiamata di procedura. Le procedure, note anche come routine, subroutine o funzioni, contengono semplicemente una serie di passaggi di calcolo da eseguire.<\/p>\n<\/blockquote>\n<p>A volte, vengo da questo dalle esigenze di un progetto, a volte \u00e8 da un progetto che ho ereditato, oa volte per qualcos&#8217;altro.<\/p>\n<p>Penso che sia importante che, come programmatori, non teniamo un paradigma cos\u00ec alto da evitare di lavorare con altri modi di scrivere codice. Dopotutto, l&#8217;atto di scrivere codice riguarda, in sostanza, la risoluzione di un problema.<\/p>\n<p>Il modo in cui il problema viene risolto pu\u00f2 essere considerato secondario.<\/p>\n<p>Indipendentemente da ci\u00f2, ogni volta che lavoro con una base di codice; tuttavia, \u00e8 scritto, cerco comunque di assicurarmi che sia organizzato in un modo che sia coeso, il pi\u00f9 facile da seguire possibile e che possa essere mantenuto nel tempo.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160742-61e711c032aea.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160742-61e711c032aea.png\" alt=\"Suggerimenti per l&#039;organizzazione del codice di procedura\"><\/a><\/p>\n<p>Ho pensato di condividere il modo in cui mi avvicino alla scrittura di plugin per WordPress usando la programmazione procedurale rispetto alla programmazione orientata agli oggetti e come organizzo il codice procedurale.<\/p>\n<p>Se non altro, forse questo ti dar\u00e0 alcune idee per un progetto attuale o futuro.<\/p>\n<h2>Codice procedurale organizzativo<\/h2>\n<p>Quando si tratta di lavorare con il codice procedurale, c&#8217;\u00e8 molto potenziale per includere quasi tutto in un unico file monolitico.<\/p>\n<p>Non sono di questo approccio perch\u00e9 rende pi\u00f9 difficile trovare dove risiede qualcosa nel file (almeno se sei qualcuno che sta appena entrando in un progetto).<\/p>\n<p>A tal fine, queste sono le cose che di solito faccio.<\/p>\n<ol>\n<li><strong>Azioni e filtri separati<\/strong>. In genere, eseguir\u00f2 tutte le azioni e le inserir\u00f2 in un file, prender\u00f2 tutti i filtri e li inserir\u00f2 in un altro file. \u00c8 anche possibile separare ulteriormente questi file in sottodirectory (se non anche spazi dei nomi) in base alle loro aree di interesse. Ad esempio, qualsiasi azione relativa all&#8217;area di amministrazione pu\u00f2 andare in una sottodirectory <strong>admin .<\/strong><\/li>\n<li><strong>Scrivi un file di debug<\/strong>. Normalmente includo un semplice script di debug in un plug-in in modo da poter facilmente eseguire il rendering delle informazioni di debug sullo schermo, scrivere nel file di registro di debug o scrivere su entrambi. Questa pu\u00f2 essere una comodit\u00e0 se non altro, ma aiuta a fornire un modo per vedere facilmente cosa sta succedendo senza dover <a href=\"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-di-xdebug-con-valet-e-wordpress\/\" title=\"avviare Xdebug\">avviare Xdebug<\/a> e scorrere il codice (a meno che non sia un problema pi\u00f9 complicato).<\/li>\n<li><strong>Caricatore automatico<\/strong>. Se stai utilizzando codice procedurale, potresti non utilizzare affatto gli <a href=\"https:\/\/wordpress.mediadoma.com\/it\/spazi-dei-nomi-e-caricamento-automatico-in-wordpress\/\" title=\"spazi dei nomi\">spazi dei nomi<\/a>, ma in tal caso includo anche un caricatore automatico che ho scritto per semplificare l&#8217;inclusione automatica dei file. Questo \u00e8 diverso dal caricatore automatico <a href=\"https:\/\/wordpress.mediadoma.com\/it\/compositore-per-wordpress-parte-1\/\" title=\"generato da Composer\">generato da Composer<\/a>, ma fa comunque la stessa cosa.<\/li>\n<\/ol>\n<p>Ovviamente, non c&#8217;\u00e8 nulla di intrinsecamente complicato nelle raccomandazioni di cui sopra. In effetti, direi che uno qualsiasi dei precedenti, in particolare il primo passo pu\u00f2 fare molto per migliorare la gestibilit\u00e0 del codice procedurale.<\/p>\n<h2>Il file principale del plug-in<\/h2>\n<p>Se scegli di fare tutto quanto sopra, la versione finale del file bootstrap del plugin dovrebbe essere davvero semplice. In effetti, potrebbe sembrare qualcosa di semplice <a href=\"https:\/\/gist.github.com\/tommcfarlin\/777bb0180968134a3c40ebecb241d2ad\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">come questo<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name: Acme Plugin\n * Plugin URI:  https:\/\/acmeplugins.com\/acme\n * Description: This is the plugin description.\n * Version:     1.0.0\n * Author:      Acme Plugins Co.\n * Author URI:  https:\/\/acmeplugins.com\/acme\n * License:     GPL-3.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\n * @since   1.0.0\n * @package Acme\n *\/\n\nnamespace Acme;\n\ndefined( 'WPINC') || die;\n\n\/\/ Include the custom autoloader.\nrequire_once __DIR__. '\/inc\/autoload.php';\n\n\/\/ Include action and filters.\nrequire_once __DIR__. '\/inc\/actions.php';\nrequire_once __DIR__. '\/inc\/filters.php';\n<\/code><\/pre>\n<p>Ancora una volta, questo presuppone che tu stia applicando tutti e tre i consigli. In caso contrario, l&#8217;implementazione potrebbe variare.<\/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>Come scrivo plugin per WordPress usando la programmazione procedurale rispetto alla programmazione orientata agli oggetti e come organizzo il codice procedurale.<\/p>\n","protected":false},"author":1,"featured_media":235594,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,720,844,865],"tags":[1168],"class_list":["post-231641","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231641","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=231641"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231641\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/235594"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}