{"id":229694,"date":"2022-11-01T18:10:00","date_gmt":"2022-11-01T15:10:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229694"},"modified":"2022-11-09T15:58:48","modified_gmt":"2022-11-09T12:58:48","slug":"sulla-scrittura-di-codice-intelligente-con-array-in-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/sulla-scrittura-di-codice-intelligente-con-array-in-wordpress\/","title":{"rendered":"Sulla scrittura di codice intelligente con array in WordPress"},"content":{"rendered":"\n<p>Non so se esiste uno standard per quello che \u00e8 considerato &quot;codice intelligente&quot;, ma penso che se dovessi mostrare vari esempi di codice ai programmatori, sarebbero in grado di conoscerlo quando lo vedranno.<\/p>\n<p>E c&#8217;\u00e8 stato un periodo nella mia carriera in cui ero molto interessato a scrivere codice intelligente. Ma pi\u00f9 invecchio e pi\u00f9 lavoro svolgo nella manutenzione dei progetti, meno mi preoccupo di scrivere codice intelligente e pi\u00f9 sono interessato a scrivere codice chiaro, da leggere e quindi da mantenere.<\/p>\n<p>Il codice intelligente \u00e8 per gli uccelli. Perdonate questi stupidi giochi di parole.<\/p>\n<p>Quando lavoriamo con WordPress, probabilmente abbiamo a che fare molto con gli array, soprattutto dato che gran parte degli interni di WordPress sono basati su di essi (s\u00ec, ci sono anche alcuni oggetti, ma gli array sono pervasivi).<\/p>\n<p>Che aspetto ha, quindi, il codice intelligente con gli array in WordPress rispetto al codice meno intelligente? E inoltre, dovremmo evitare di mirare a scrivere codice intelligente?<\/p>\n<h2>Codice intelligente con array<\/h2>\n<p>Le funzioni di array sono probabilmente uno dei pi\u00f9 grandi insiemi di funzioni in PHP.<\/p>\n<p>Naturalmente, scrivere codice intelligente con WordPress sembra adattarsi in parte e in parte all&#8217;ambiente, giusto? Non sto dicendo che sia affatto male. Sto solo dicendo che quando hai funzioni nello spazio dei nomi globale che funzionano con array che restituiscono array, \u00e8 fin troppo facile scrivere chiamate nidificate che alla fine richiedono un po&#8217; pi\u00f9 di lavoro mentale per analizzare ci\u00f2 che sta facendo il codice.<\/p>\n<p>Certo, scriverne \u00e8 una cosa, ma forse ha senso guardare un esempio di come potrebbe essere il codice intelligente con WordPress e quindi come pu\u00f2 essere rifattorizzato.<\/p>\n<h3>Un esempio<\/h3>\n<p>Supponiamo, ad esempio, di avere un post e di aggiornare l&#8217;estratto del post in modo che un nome contenuto nell&#8217;estratto debba essere rimosso. Quando ci\u00f2 accade non \u00e8 necessariamente importante (sebbene <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/delete_user\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">delete_user<\/a> non sia difficile da immaginare, giusto?)<\/p>\n<p>Fin dall&#8217;inizio ci viene dato:<\/p>\n<ul>\n<li>l&#8217;ID del post,<\/li>\n<li>il nome della persona da rimuovere.<\/li>\n<\/ul>\n<p>Un modo per farlo sarebbe usare una combinazione di <a href=\"https:\/\/php.net\/manual\/en\/language.types.array.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">array<\/a>, <a href=\"https:\/\/php.net\/manual\/en\/function.array-map.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">array_map<\/a>, <a href=\"https:\/\/php.net\/manual\/en\/function.explode.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">esplodere<\/a>, <a href=\"https:\/\/php.net\/manual\/en\/function.array-diff.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">array_diff<\/a>, <a href=\"https:\/\/php.net\/manual\/en\/function.implode.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">implode<\/a>. Tutto per questo:<\/p>\n<ul>\n<li>array per creare un array della persona (perch\u00e9, come array, \u00e8 richiesto in seguito),<\/li>\n<li>array_map per tagliare lo spazio bianco dopo aver fatto esplodere l&#8217;estratto in un array,<\/li>\n<li>array_diff per trovare le stringhe rimaste dopo aver rimosso un nome,<\/li>\n<li>e implode per ricostruire il risultato in una stringa per post_excerpt.<\/li>\n<\/ul>\n<p>Ok, quindi, detto questo, ecco <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13ff8610716de3cb5b5e612d80267e9e#file-00-clever-code-with-arrays-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">come potrebbe essere<\/a> un esempio di codice intelligente in WordPress :<\/p>\n<pre><code>&lt;?php\n\n\/\/ Get the excerpt from the incoming post.\n$post    = get_post( $post_id );\n$excerpt = $post-&gt;post_excerpt;\n\n\/**\n * And we update the post content without the information (and we don't need\n * paragraph tags).\n *\/\n$event_post-&gt;post_excerpt = \n  apply_filters( \n    'the_excerpt', \n    implode( ', ', \n      array_diff( \n        array_map( \n          'trim', \n          explode( ',', $excerpt) ), \n      array( $name) ),\n    ),\n  );<\/code><\/pre>\n<p>Ma \u00e8 un sacco di annidamento, e di solito dobbiamo iniziare dall&#8217;esterno e sapere cosa sta facendo ogni funzione, giusto?<\/p>\n<p>Per ripulirlo, dobbiamo ancora occuparci delle funzioni elencate sopra, ma possiamo suddividere le cose in passaggi pi\u00f9 facili da leggere (insieme ai commenti sul codice) per rendere pi\u00f9 facile l&#8217;analisi per un altro sviluppatore.<\/p>\n<p>Forse potrebbe assomigliare <a href=\"https:\/\/gist.github.com\/tommcfarlin\/13ff8610716de3cb5b5e612d80267e9e#file-00-verbose-with-arrays-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a questo<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/\/ Get the excerpt from the incoming post.\n$post    = get_post( $post_id );\n$excerpt = $post-&gt;post_excerpt;\n\n\/\/ Remove the name from the array of names in the excerpt.\n$to_remove = array( $name );\n$names     = array_map( 'trim', explode( ',', $excerpt) );\n$result    = array_diff( $names, $to_remove );\n\n\/\/ Now creae the new excerpt.\n$new_excerpt = implode( ', ', $result );\n\n\/**\n * And we update the post content without the information (and we don't need\n * paragraph tags).\n *\/\n$event_post-&gt;post_excerpt = apply_filters( 'the_excerpt', $new_excerpt );<\/code><\/pre>\n<p>Ora, \u00e8 questo il modo di farlo? Non lo so. Ma \u00e8 un modo per farlo. Ed \u00e8 una di quelle situazioni pi\u00f9 facili da leggere e da seguire.<\/p>\n<p>Quindi forse non \u00e8 scrivere codice intelligente in WordPress, ma non so &#8211; n\u00e9 penso &#8211; che dovrebbe essere il nostro obiettivo.<\/p>\n<h2>Dovremmo mirare a scrivere un codice intelligente?<\/h2>\n<p>Il <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/best-practices\/coding-standards\/php\/#clever-code\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Manuale di WordPress<\/a> afferma quanto segue:<\/p>\n<blockquote>\n<p>In generale, la leggibilit\u00e0 \u00e8 pi\u00f9 importante dell&#8217;intelligenza o della brevit\u00e0.<\/p>\n<\/blockquote>\n<p>E poi passa a fare un esempio. A questo punto della mia carriera, tendo ad essere d&#8217;accordo:<\/p>\n<ul>\n<li>codice intelligente non equivale a codice pi\u00f9 performante,<\/li>\n<li>il codice intelligente spesso impiega pi\u00f9 tempo per saltare attraverso pi\u00f9 cerchi mentali rispetto al codice dettagliato,<\/li>\n<li>il codice intelligente \u00e8 quindi pi\u00f9 difficile da mantenere, specialmente quando si passa a una base di codice precedente.<\/li>\n<\/ul>\n<p>Infine, penso che persone diverse potrebbero considerare un codice pi\u00f9 intelligente di altri, ma c&#8217;\u00e8 anche un codice che molti di noi considererebbero un tentativo di essere pi\u00f9 intelligente che no.<\/p>\n<p>In definitiva, mira a scrivere il codice in qualsiasi modo tu voglia scrivere, ma scrivi pensando a un altro sviluppatore: se ti sei mai lamentato del fatto che un pezzo di codice \u00e8 difficile da decifrare a prima vista, \u00e8 probabile che sia stato scritto male o fosse un cerca di essere intelligente. Quindi non essere quel ragazzo o quella ragazza che sta passando i soldi al prossimo sviluppatore.<\/p>\n<p>Cerca invece di scrivere un codice chiaro e di utilizzare i commenti quando necessario.<\/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>Che aspetto ha il codice intelligente con array in WordPress rispetto al codice meno intelligente? E dovremmo evitare di mirare a scrivere codice intelligente?<\/p>\n","protected":false},"author":1,"featured_media":220968,"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-229694","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\/229694","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=229694"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229694\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/220968"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}