{"id":229776,"date":"2022-11-03T09:46:00","date_gmt":"2022-11-03T06:46:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229776"},"modified":"2022-11-09T16:27:56","modified_gmt":"2022-11-09T13:27:56","slug":"prototipazione-rapida-con-wordpress-analisi-concettuale","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/prototipazione-rapida-con-wordpress-analisi-concettuale\/","title":{"rendered":"Prototipazione rapida con WordPress: analisi concettuale"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/it\/prototipazione-rapida-con-wordpress-dal-concetto-al-plug-in\/\" title=\"Nel post precedente\" >Nel post precedente<\/a>, ho iniziato a seguire il processo per prendere l&#8217;idea di un plug-in che la prototipasse rapidamente in qualcosa che funzioni all&#8217;interno di WordPress. E sebbene funzioni, non segue necessariamente alcun principio orientato agli oggetti, n\u00e9 \u00e8 in un luogo in cui possiamo facilmente continuare ad aggiungere funzionalit\u00e0.<\/p>\n<p>No, questo non \u00e8 un argomento per spiegare perch\u00e9 l&#8217;orientamento agli oggetti \u00e8 migliore. \u00c8 il mio modo preferito di scrivere codice, quindi mi sto avvicinando in questo modo.<\/p>\n<p>So che il codice di esempio che sto fornendo \u00e8 semplice e so che \u00e8 possibile creare un caso in cui qualcosa del genere pu\u00f2 essere lasciato cos\u00ec com&#8217;\u00e8. Ma il punto \u00e8 mostrare come prendere un concetto, prototiparlo e poi spostarlo in qualcosa che segua i principi orientati agli oggetti.<\/p>\n<p>E, secondo la mia esperienza, \u00e8 molto pi\u00f9 difficile farlo con un esempio complesso fin dall&#8217;inizio. se perdi lettori dall&#8217;inizio, allora che speranza c&#8217;\u00e8 per loro di capire cosa sta arrivando?<\/p>\n<p>Detto questo, daremo un&#8217;occhiata al codice del post precedente e faremo un po&#8217; di analisi concettuale su di esso per vedere cosa potrebbe funzionare bene all&#8217;interno di una classe e come potremmo iniziare a organizzarlo usando le classi, <a href=\"https:\/\/wordpress.mediadoma.com\/it\/spazi-dei-nomi-e-caricamento-automatico-in-wordpress\/\" title=\"namespace\" >namespace<\/a> e cos\u00ec via.<\/p>\n<h2>Analisi del concetto<\/h2>\n<p>Ogni volta che si tratta di programmazione, \u00e8 cos\u00ec facile voler saltare immediatamente alla scrittura del codice e poi alla sua sottomissione fino a quando non fa qualcosa che vogliamo.<\/p>\n<p>E una volta che funziona, sembra che abbiamo finito e possiamo passare al compito successivo. Ma per progetti pi\u00f9 grandi, non \u00e8 sempre cos\u00ec. In effetti, spesso \u00e8 meglio fare un po&#8217; di analisi concettuale dell&#8217;analisi orientata agli oggetti sul tuo progetto prima di andare avanti.<\/p>\n<p>Il semplice passaggio alla programmazione non \u00e8 sempre l&#8217;approccio migliore.<\/p>\n<h3>Un caso per l&#8217;analisi<\/h3>\n<p>Caso in questione: al momento della stesura di questo articolo, io e uno dei miei compagni di squadra stiamo discutendo se estendere una classe o scrivere una nuova classe per gestire le informazioni di geolocalizzazione per i dati estratti dall&#8217;API di Google Maps.<\/p>\n<p>Posso alarlo e scrivere qualcosa che funzioni? Sicuro. Ma si integrer\u00e0 bene con l&#8217;applicazione? Non senza analisi concettuale, pianificazione e coordinamento con il resto del sistema.<\/p>\n<p>Ed \u00e8 proprio questo lo scopo dell&#8217;analisi.<\/p>\n<h3>Analizzare il nostro lavoro<\/h3>\n<p>Quindi cosa significa questo per il plugin che abbiamo visto ieri? In questo momento, abbiamo quanto segue:<\/p>\n<ul>\n<li>una funzione responsabile della creazione di una meta box e della visualizzazione dei contenuti al suo interno,<\/li>\n<li>una funzione per interrogare il database e recuperare gli ultimi post pi\u00f9 recenti,<\/li>\n<li>una funzione per visualizzare i risultati nella meta box<\/li>\n<li>una funzione per visualizzare un messaggio quando non ci sono risultati nella meta box<\/li>\n<\/ul>\n<p>Inoltre, alcune di queste funzioni sono correlate agli hook che fanno parte dell&#8217;API di WordPress. Vale a dire, la funzione per creare il meta box \u00e8 agganciata a WordPress e la sua funzione complementare per il rendering del display fanno tutte parte dello stesso componente.<\/p>\n<p>Quindi abbiamo funzionalit\u00e0 per interrogare il database e abbiamo funzioni direttamente correlate alle viste.<\/p>\n<p>Quindi, come potrebbe apparire se dovessimo diagrammarlo in varie classi e file che aiuterebbero a crearlo in un modo pi\u00f9 orientato agli oggetti?<\/p>\n<h3>Nessuna soluzione unica<\/h3>\n<p>Non esiste un&#8217;unica soluzione e alcune soluzioni sono molto pi\u00f9 avanzate di altre. Ma dal momento che sto cercando di trovare un equilibrio qui, mi avviciner\u00f2 a questo in un modo pi\u00f9 semplice rispetto a fare troppo lavoro con l&#8217;astrazione, l&#8217;ereditariet\u00e0, le interfacce e tutto il resto.<\/p>\n<h3>Concentrandoci su ci\u00f2 che abbiamo<\/h3>\n<p>Per ora, concentriamoci sulle singole classi e sulle responsabilit\u00e0 che possono ricoprire. Per esempio:<\/p>\n<ul>\n<li>Penso che avremo bisogno di una classe che rappresenti la meta box. Questo dovrebbe essere responsabile della creazione della meta box.<\/li>\n<li>Avremo anche bisogno di una classe responsabile della visualizzazione del contenuto della meta box. Potresti pensare che includere una funzione nella classe per la meta box funzioni bene. Lo fa; tuttavia, se si vuole pensare che ogni classe abbia un&#8217;unica responsabilit\u00e0, allora possiamo creare una classe specifica per il display e specificamente per il meta box, quindi iniettare il display nel meta box durante l&#8217;istanza. Ne parleremo pi\u00f9 avanti.<\/li>\n<\/ul>\n<p>A questo punto, il nostro diagramma potrebbe assomigliare a questo:<\/p>\n<p>Abbattere la meta box.<\/p>\n<p>Successivamente, dobbiamo considerare l&#8217;altra funzionalit\u00e0. Vale a dire, la funzionalit\u00e0 per visualizzare i risultati nella meta box e la funzionalit\u00e0 per visualizzare i risultati quando non ce ne sono.<\/p>\n<p>Per visualizzare qualsiasi cosa nella meta box, dobbiamo avere un modo per interrogare il database per recuperare i risultati. Da l\u00ec, dobbiamo quindi essere in grado di avere un modo per determinare se ci sono risultati, se non ci sono e quindi iniettare quei risultati nella vista.<\/p>\n<p>Date queste informazioni, sembra che abbiamo bisogno di una classe per interrogare il database e quindi abbiamo bisogno di una classe per ampliare un messaggio nella visualizzazione del meta box.<\/p>\n<p>Forse un modo per organizzare le classi sarebbe questo:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e79938d88c8.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-166719-61e79938d88c8.png\" alt=\"Prototipazione rapida con WordPress: analisi concettuale\" ><\/a><\/p>\n<p>Interrogazione del database e preparazione dei messaggi.<\/p>\n<p>La versione finale del diagramma potrebbe essere un po&#8217; angusta, ma alla fine stiamo guardando qualcosa del genere:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e7993eaf874.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-166719-61e7993eaf874.png\" alt=\"Prototipazione rapida con WordPress: analisi concettuale\" ><\/a><\/p>\n<p>L&#8217;organizzazione finale per le nostre classi.<\/p>\n<p>Ai fini della spiegazione:<\/p>\n<ul>\n<li>Il post retriever chiede al database gli ultimi tre post pi\u00f9 recenti.<\/li>\n<li>Il post messenger determiner\u00e0 quale messaggio iniettare nel display.<\/li>\n<li>Il display visualizzer\u00e0 il messaggio che \u00e8 stato impostato.<\/li>\n<li>La meta box render\u00e0 la sua visualizzazione al browser web.<\/li>\n<\/ul>\n<p>Quindi abbiamo essenzialmente preso alcune funzioni che erano collegate a WordPress e le abbiamo suddivise in componenti che possono comunicare tra loro, ognuna delle quali \u00e8 relativamente facile da lavorare e non fa pi\u00f9 di un singolo lavoro.<\/p>\n<h2>Convertirlo in codice<\/h2>\n<p>Ora che abbiamo un&#8217;idea su come convertire il concetto precedente in codice, vedremo come farlo nei prossimi due articoli.<\/p>\n<p>Nota che il modo in cui scegli di implementare il tuo codice o progettare le tue classi potrebbe essere leggermente diverso da quello che ho sopra e potresti avere suggerimenti su come organizzare meglio ci\u00f2 che \u00e8 sopra. Se \u00e8 cos\u00ec, lascia un commento.<\/p>\n<p>Nel prossimo post, cercheremo di convertirlo in codice funzionale e, successivamente, cercheremo di organizzarlo in spazi dei nomi appropriati e una corretta organizzazione dei file.<\/p>\n<h2>Messaggi di serie<\/h2>\n<ol>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/it\/prototipazione-rapida-con-wordpress-dal-concetto-al-plug-in\/\" title=\"Prototipazione rapida con WordPress: dal concetto al plug-in\" >Prototipazione rapida con WordPress: dal concetto al plug-in<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/concept-analysis\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Prototipazione rapida con WordPress: analisi concettuale<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/it\/prototipazione-rapida-da-prototipazione-a-codice-parte-1\/\" title=\"Prototipazione rapida: da prototipazione a codice, parte 1\">Prototipazione rapida: da prototipazione a codice, parte 1<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/it\/prototipazione-rapida-dal-prototipo-al-codice-parte-2\/\" title=\"Prototipazione rapida: dal prototipo al codice, parte 2\">Prototipazione rapida: dal prototipo al codice, parte 2<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/it\/prototipazione-rapida-introduzione-del-caricamento-automatico\/\" title=\"Prototipazione rapida: introduzione del caricamento automatico\">Prototipazione rapida: introduzione del caricamento automatico<\/a><\/li>\n<\/ol>\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>Spesso \u00e8 meglio fare un po&#8217; di analisi concettuale dell&#8217;analisi orientata agli oggetti sul tuo progetto prima di andare avanti.<\/p>\n","protected":false},"author":1,"featured_media":223990,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,720,844],"tags":[1168],"class_list":["post-229776","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229776","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=229776"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229776\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/223990"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}