{"id":230283,"date":"2022-11-17T18:34:00","date_gmt":"2022-11-17T15:34:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230283"},"modified":"2022-11-09T20:57:40","modified_gmt":"2022-11-09T17:57:40","slug":"programmazione-orientata-agli-oggetti-in-wordpress-analisi-parte-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/programmazione-orientata-agli-oggetti-in-wordpress-analisi-parte-1\/","title":{"rendered":"Programmazione orientata agli oggetti in WordPress: analisi, parte 1"},"content":{"rendered":"\n<p>Quando ho deciso di offrire <a href=\"https:\/\/tommcfarlin.com\/membership-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">abbonamenti<\/a> su questo sito, sapevo che la prima cosa che volevo affrontare era un&#8217;introduzione alla programmazione orientata agli oggetti.<\/p>\n<p>\u00c8 qualcosa che sembra essere interessante per la maggior parte delle persone che lavorano in WordPress, ma c&#8217;\u00e8 un problema che allontana molte persone o genera scarsi risultati:<\/p>\n<p>La programmazione orientata agli oggetti pu\u00f2 complicarsi rapidamente. E questo diventa demotivante.<\/p>\n<p>Ecco cosa intendo: supponiamo che tu sia uno sviluppatore di WordPress che inizia a ricercare la programmazione orientata agli oggetti. Inizia parlando di classi, costruttori e funzioni, e tutto sembra a posto.<\/p>\n<p>Ma poi entra rapidamente in:<\/p>\n<ul>\n<li>metodi privati \u200b\u200be protetti,<\/li>\n<li>eredit\u00e0,<\/li>\n<li>polimorfismo,<\/li>\n<li>modelli di progettazione,<\/li>\n<li>iniezione di dipendenza,<\/li>\n<li>archivi,<\/li>\n<li>e cos\u00ec via.<\/li>\n<\/ul>\n<p>Va a palle di neve, vero? E non \u00e8 affatto cos\u00ec che deve essere, ma \u00e8 difficile trovare un&#8217;introduzione adeguata <a href=\"https:\/\/carlalexander.ca\/discover-object-oriented-programming\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a parte poche risorse<\/a> disponibili.<\/p>\n<p>Detto questo (e servendo da sfondo per dove sono diretto), ho voluto creare una serie di contenuti per coloro che:<\/p>\n<ul>\n<li>sono veramente interessati alla programmazione orientata agli oggetti,<\/li>\n<li>non sono sicuro da dove cominciare,<\/li>\n<li>vogliono accrescere le proprie capacit\u00e0,<\/li>\n<li>vogliono iniziare da zero senza degenerare in materiale pi\u00f9 complicato troppo rapidamente.<\/li>\n<\/ul>\n<p>Ed \u00e8 quello che comincio oggi e nella prima major seria prevista per <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">i membri<\/a>. Detto questo, iniziamo.<\/p>\n<p>Nello specifico, iniziamo a parlare di programmazione, analisi, design orientata agli oggetti e perch\u00e9 dovrebbe iniziare da l\u00ec.<\/p>\n<h2>Programmazione orientata agli oggetti: analisi<\/h2>\n<p>Quando si tratta di scrivere codice, ci sono attualmente tre modi popolari per farlo:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">funzionale<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">procedurale<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">orientato agli oggetti<\/a>.<\/li>\n<\/ul>\n<p>Ogni volta che lavoriamo e leggiamo il codice di WordPress, leggerai una combinazione di codice procedurale e codice orientato agli oggetti.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.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-165350-61e77e125a74e.png\" alt=\"Programmazione orientata agli oggetti in WordPress: analisi, parte 1\" ><\/a><\/p>\n<p>Ci sono alcune ragioni per cui questo \u00e8 il caso, ma non rientra nell&#8217;ambito della nostra discussione.<\/p>\n<p>Questo perch\u00e9 WordPress \u00e8 costruito con entrambi e perch\u00e9 alcuni aspetti dello sviluppo di WordPress possono essere scritti con codice procedurale, come plugin e temi, e altri richiedono uno sviluppo orientato agli oggetti come i <a href=\"https:\/\/codex.wordpress.org\/Widgets_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">widget<\/a>.<\/p>\n<h3>Analisi e Progettazione<\/h3>\n<p>Molto spesso, la prima cosa che vogliamo fare, come sviluppatori (in erba o meno), \u00e8 iniziare immediatamente a scrivere codice. Capisco anch&#8217;io. \u00c8 divertente. Abbiamo un&#8217;idea, vogliamo darle vita, vogliamo iniziare a usarla e vogliamo mostrarla ad altre persone.<\/p>\n<p>Tuttavia, ecco il problema nel farlo: spesso saltiamo direttamente nella scrittura del codice per cercare di fare in modo che il progetto faccia ci\u00f2 che vogliamo che faccia.<\/p>\n<p>Se questo \u00e8 un progetto semplice (e intendo davvero semplice), allora non \u00e8 un grosso problema. Onestamente, l&#8217;ho fatto (e <a href=\"https:\/\/github.com\/tommcfarlin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a> ne \u00e8 la prova). Ma quando si tratta del lavoro che svolgiamo in <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pressware<\/a> ; \u00e8 una storia diversa.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.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-165350-61e77e173b695.png\" alt=\"Programmazione orientata agli oggetti in WordPress: analisi, parte 1\" ><\/a><\/p>\n<p>Quando si tratta di progetti del genere, vogliamo fare un po&#8217; di analisi e design prima di scrivere il codice.<\/p>\n<p>Il che solleva la domanda, cos&#8217;\u00e8 l&#8217;analisi e il design orientati agli oggetti?<\/p>\n<h4>Analisi<\/h4>\n<p>In breve, pensala in questo modo:<\/p>\n<p>L&#8217;analisi \u00e8 il processo di prendere l&#8217;idea che il cliente o che hai e scavare ci\u00f2 che ha davvero bisogno di essere costruito.<\/p>\n<p>Questo pu\u00f2 aiutarti a determinare qual \u00e8 il valore dell&#8217;applicazione e cosa non \u00e8 necessario per la prima versione dell&#8217;applicazione. Mi piace etichettarli per quanto riguarda i &quot;must-have&quot; e quali sono i &quot;bello da avere&quot;.<\/p>\n<p>Una buona regola pratica \u00e8 questa:<\/p>\n<ul>\n<li><strong>i must-have<\/strong> sono le cose che sono fondamentali per l&#8217;applicazione e devono entrare nella prima iterazione del progetto,<\/li>\n<li><strong>le cose belle da avere<\/strong> sono le cose che alla fine possiamo incorporarci<\/li>\n<\/ul>\n<p>In definitiva, questo ci aiuta a lavorare verso una prima versione forte per il cliente. Forse un esempio \u00e8 per WordPress:<\/p>\n<ul>\n<li>La prima versione di WordPress doveva avere un&#8217;API plug-in o doveva solo avere la possibilit\u00e0 per le persone di scrivere post e pubblicarli sul web?<\/li>\n<\/ul>\n<p>Se stai costruendo una piattaforma per il blog, deve essere estensibile dalla prima versione? Questo non \u00e8 altro che un esempio, ma hai un&#8217;idea.<\/p>\n<h4>Cosa rende l&#8217;analisi cos\u00ec difficile?<\/h4>\n<p>Penso che spesso abbia a che fare con i personaggi.<\/p>\n<p>Ad esempio, noi, come programmatori, pensiamo che un progetto debba sempre fare ci\u00f2 che vuole il cliente. La verit\u00e0 \u00e8 che non \u00e8 sempre cos\u00ec.<\/p>\n<p>Voglio dire, alla fine potrebbe essere, ma la prima versione del progetto non deve necessariamente essere cos\u00ec.<\/p>\n<p>Inoltre, uno dei principi di programmazione orientata agli oggetti \u00e8 che non scriviamo molto codice duplicato. Ma pu\u00f2 essere molto difficile da fare se non \u00e8 stata eseguita un&#8217;analisi adeguata.<\/p>\n<p>Infine, coloro che sono pi\u00f9 esperti diranno che un buon software utilizzer\u00e0 principi provati e veri, siano essi modelli di progettazione o meno, ma che \u00e8 in grado di essere modificato facilmente nel tempo. Che, in un certo senso, cresce organicamente.<\/p>\n<h2>Allora cosa dobbiamo fare?<\/h2>\n<p>Nel prossimo articolo parler\u00f2 di tre cose che possiamo fare, come sviluppatori, per assicurarci che il software che stiamo costruendo per noi stessi o per gli altri ci porti nella giusta direzione.<\/p>\n<p>Non dir\u00f2 che \u00e8 un proiettile d&#8217;argento perch\u00e9 non credo che esista, ma dir\u00f2 che \u00e8 un approccio piuttosto forte che ho trovato altri da usare e bene come me stesso e che porta a una buona direzione in termini di analisi orientata agli oggetti.<\/p>\n<p>Questo alla fine ci porter\u00e0 a progettare. Ma non ci siamo ancora.<\/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>La programmazione orientata agli oggetti in WordPress, per non parlare di qualsiasi piattaforma, pu\u00f2 essere un compito arduo. Ma voglio iniziare da zero e andare avanti da l\u00ec.<\/p>\n","protected":false},"author":1,"featured_media":165351,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,835,720,844],"tags":[1168],"class_list":["post-230283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230283","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=230283"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230283\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/165351"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}