{"id":229111,"date":"2022-11-03T10:01:00","date_gmt":"2022-11-03T07:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229111"},"modified":"2022-11-09T05:42:46","modified_gmt":"2022-11-09T02:42:46","slug":"prototipos-rapidos-con-wordpress-analisis-de-concepto","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/prototipos-rapidos-con-wordpress-analisis-de-concepto\/","title":{"rendered":"Prototipos R\u00e1pidos con WordPress: An\u00e1lisis de Concepto"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/es\/creacion-rapida-de-prototipos-con-wordpress-del-concepto-al-complemento\/\" title=\"En la publicaci\u00f3n anterior\" >En la publicaci\u00f3n anterior<\/a>, comenc\u00e9 a caminar a trav\u00e9s del proceso de tomar la idea de un complemento que lo convirti\u00f3 r\u00e1pidamente en algo que funciona dentro de WordPress. Y aunque funciona, no sigue necesariamente ning\u00fan principio orientado a objetos, ni est\u00e1 en un lugar en el que podamos seguir agregando funciones f\u00e1cilmente.<\/p>\n<p>No, este no es un argumento de por qu\u00e9 la orientaci\u00f3n a objetos es mejor. Sucede que es mi forma preferida de escribir c\u00f3digo, as\u00ed que lo estoy abordando de esta manera.<\/p>\n<p>S\u00e9 que el c\u00f3digo de ejemplo que estoy dando es simple y s\u00e9 que se puede argumentar que algo como esto se puede dejar como est\u00e1. Pero el objetivo de esto es mostrar c\u00f3mo tomar un concepto, crear un prototipo y luego moverlo a algo que siga los principios orientados a objetos.<\/p>\n<p>Y, seg\u00fan mi experiencia, es mucho m\u00e1s dif\u00edcil hacerlo con un ejemplo complejo desde el principio. si pierdes lectores desde el principio, \u00bfqu\u00e9 esperanza hay de que entiendan lo que viene?<\/p>\n<p>Entonces, dicho esto, vamos a echar un vistazo al c\u00f3digo de la publicaci\u00f3n anterior y hacer un peque\u00f1o an\u00e1lisis de concepto para ver qu\u00e9 podr\u00eda funcionar bien dentro de una clase y c\u00f3mo podr\u00edamos comenzar a organizarlo usando clases, espacios de <a href=\"https:\/\/wordpress.mediadoma.com\/es\/espacios-de-nombres-y-carga-automatica-en-wordpress\/\" title=\"nombres\" >nombres<\/a>, etc.<\/p>\n<h2>An\u00e1lisis de concepto<\/h2>\n<p>Siempre que se trata de programaci\u00f3n, es muy f\u00e1cil querer pasar a escribir c\u00f3digo de inmediato y luego modificarlo para que se env\u00ede hasta que haga lo que queremos.<\/p>\n<p>Y una vez que funciona, parece que hemos terminado y podemos pasar a la siguiente tarea. Pero para proyectos m\u00e1s grandes, ese no es siempre el caso. De hecho, a menudo es mejor hacer un poco de an\u00e1lisis de concepto de an\u00e1lisis orientado a objetos en su dise\u00f1o antes de seguir adelante.<\/p>\n<p>Simplemente saltar a la codificaci\u00f3n no siempre es el mejor enfoque.<\/p>\n<h3>Un caso para el an\u00e1lisis<\/h3>\n<p>Caso en cuesti\u00f3n: en el momento de escribir este art\u00edculo, uno de mis compa\u00f1eros de equipo y yo estamos discutiendo si deber\u00edamos extender una clase o escribir una nueva clase para manejar la informaci\u00f3n de geolocalizaci\u00f3n para los datos extra\u00eddos de la API de Google Maps.<\/p>\n<p>\u00bfPuedo improvisar y escribir algo que funcione? Por supuesto. Pero, \u00bfse integrar\u00e1 bien con la aplicaci\u00f3n? No sin an\u00e1lisis de concepto, planificaci\u00f3n y coordinaci\u00f3n con el resto del sistema.<\/p>\n<p>Y de eso se trata el prop\u00f3sito del an\u00e1lisis.<\/p>\n<h3>Analizando Nuestro Trabajo<\/h3>\n<p>Entonces, \u00bfqu\u00e9 significa esto para el complemento que vimos ayer? En este momento, tenemos lo siguiente:<\/p>\n<ul>\n<li>una funci\u00f3n responsable de crear un meta cuadro y mostrar el contenido dentro de \u00e9l,<\/li>\n<li>una funci\u00f3n para consultar la base de datos y recuperar las \u00faltimas publicaciones m\u00e1s recientes,<\/li>\n<li>una funci\u00f3n para mostrar los resultados en el cuadro meta<\/li>\n<li>una funci\u00f3n para mostrar un mensaje cuando no hay resultados en el cuadro meta<\/li>\n<\/ul>\n<p>Adem\u00e1s, varias de estas funciones est\u00e1n relacionadas con ganchos que forman parte de la API de WordPress. Es decir, la funci\u00f3n para crear el cuadro meta est\u00e1 vinculada a WordPress y su funci\u00f3n complementaria para representar la pantalla son parte del mismo componente.<\/p>\n<p>Luego tenemos la funcionalidad para consultar la base de datos y tenemos funciones directamente relacionadas con las vistas.<\/p>\n<p>Entonces, \u00bfc\u00f3mo se ver\u00eda esto si tuvi\u00e9ramos que diagramarlo en varias clases y archivos que ayudar\u00edan a crear esto de una manera m\u00e1s orientada a objetos?<\/p>\n<h3>Sin soluci\u00f3n \u00fanica<\/h3>\n<p>No existe una soluci\u00f3n \u00fanica y algunas soluciones son mucho m\u00e1s avanzadas que otras. Pero como estoy tratando de lograr un equilibrio aqu\u00ed, voy a abordar esto de una manera m\u00e1s simple que trabajar demasiado con la abstracci\u00f3n, la herencia, las interfaces y todo eso.<\/p>\n<h3>Centr\u00e1ndonos en lo que tenemos<\/h3>\n<p>Por ahora, centr\u00e9monos en las clases individuales y las responsabilidades que pueden tener. Por ejemplo:<\/p>\n<ul>\n<li>Creo que vamos a necesitar una clase que represente el cuadro meta. Este deber\u00eda ser el responsable de crear el meta box.<\/li>\n<li>Tambi\u00e9n necesitaremos una clase responsable de mostrar el contenido del metabox. Puede pensar que incluir una funci\u00f3n en la clase para el cuadro meta funciona bien. Lo hace; sin embargo, si desea pensar que cada clase tiene una sola responsabilidad, entonces podemos crear una clase espec\u00edficamente para la visualizaci\u00f3n y espec\u00edficamente para el metabox, luego inyectar la visualizaci\u00f3n en el metabox durante la creaci\u00f3n de instancias. Hablaremos m\u00e1s sobre esto m\u00e1s adelante.<\/li>\n<\/ul>\n<p>En este punto, nuestro diagrama podr\u00eda verse as\u00ed:<\/p>\n<p>Desglosando la caja meta.<\/p>\n<p>A continuaci\u00f3n, debemos considerar la otra funcionalidad. A saber, la funcionalidad para mostrar los resultados en el cuadro meta y la funcionalidad para mostrar los resultados cuando no hay ninguno.<\/p>\n<p>Para mostrar cualquier cosa en el cuadro meta, necesitamos tener una forma de consultar la base de datos para recuperar los resultados. A partir de ah\u00ed, debemos poder tener una forma de determinar si hay resultados, si no los hay y luego inyectar esos resultados en la vista.<\/p>\n<p>Dada esta informaci\u00f3n, parece que necesitamos una clase para consultar la base de datos y luego necesitamos una clase para ampliar un mensaje en la pantalla del cuadro meta.<\/p>\n<p>Quiz\u00e1s una forma de organizar las clases se ver\u00eda as\u00ed:<\/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=\"Prototipos R\u00e1pidos con WordPress: An\u00e1lisis de Concepto\" ><\/a><\/p>\n<p>Consultar la base de datos y preparar mensajes.<\/p>\n<p>La versi\u00f3n final del diagrama puede ser un poco estrecha, pero en \u00faltima instancia estamos viendo algo como esto:<\/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=\"Prototipos R\u00e1pidos con WordPress: An\u00e1lisis de Concepto\" ><\/a><\/p>\n<p>La organizaci\u00f3n final de nuestras clases.<\/p>\n<p>A los efectos de la explicaci\u00f3n:<\/p>\n<ul>\n<li>El recuperador de publicaciones solicita a la base de datos las \u00faltimas tres publicaciones m\u00e1s recientes.<\/li>\n<li>El mensajero postal determinar\u00e1 qu\u00e9 mensaje inyectar en la pantalla.<\/li>\n<li>La pantalla mostrar\u00e1 el mensaje que se ha configurado.<\/li>\n<li>El cuadro meta mostrar\u00e1 su visualizaci\u00f3n en el navegador web.<\/li>\n<\/ul>\n<p>B\u00e1sicamente, hemos tomado algunas funciones que estaban conectadas a WordPress y las hemos dividido en componentes que pueden comunicarse entre s\u00ed, cada uno de los cuales es relativamente f\u00e1cil de trabajar y no hace m\u00e1s que un solo trabajo.<\/p>\n<h2>Convirti\u00e9ndolo a c\u00f3digo<\/h2>\n<p>Ahora que tenemos una idea de c\u00f3mo podemos convertir el concepto anterior en c\u00f3digo, veremos c\u00f3mo hacerlo en los pr\u00f3ximos art\u00edculos.<\/p>\n<p>Tenga en cuenta que la forma en que opta por implementar su c\u00f3digo o dise\u00f1ar sus clases puede ser un poco diferente de lo que tengo arriba y puede tener sugerencias sobre c\u00f3mo organizar mejor lo que est\u00e1 arriba. Si ese es el caso, deja un comentario.<\/p>\n<p>En la pr\u00f3xima publicaci\u00f3n, veremos c\u00f3mo convertir esto en c\u00f3digo funcional y, despu\u00e9s de eso, veremos c\u00f3mo organizarlo en espacios de nombres adecuados y una organizaci\u00f3n de archivos adecuada.<\/p>\n<h2>Publicaciones de la serie<\/h2>\n<ol>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/creacion-rapida-de-prototipos-con-wordpress-del-concepto-al-complemento\/\" title=\"Creaci\u00f3n r\u00e1pida de prototipos con WordPress: del concepto al complemento\" >Creaci\u00f3n r\u00e1pida de prototipos con WordPress: del concepto al complemento<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/concept-analysis\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Prototipos R\u00e1pidos con WordPress: An\u00e1lisis de Concepto<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/creacion-rapida-de-prototipos-prototipo-a-codigo-parte-1\/\" title=\"Creaci\u00f3n r\u00e1pida de prototipos: Prototipo a c\u00f3digo, Parte 1\">Creaci\u00f3n r\u00e1pida de prototipos: Prototipo a c\u00f3digo, Parte 1<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/creacion-rapida-de-prototipos-de-prototipo-a-codigo-parte-2\/\" title=\"Creaci\u00f3n r\u00e1pida de prototipos: de prototipo a c\u00f3digo, parte 2\">Creaci\u00f3n r\u00e1pida de prototipos: de prototipo a c\u00f3digo, parte 2<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/creacion-rapida-de-prototipos-introduccion-a-la-carga-automatica\/\" title=\"Creaci\u00f3n r\u00e1pida de prototipos: Introducci\u00f3n a la carga autom\u00e1tica\">Creaci\u00f3n r\u00e1pida de prototipos: Introducci\u00f3n a la carga autom\u00e1tica<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A menudo es mejor hacer un poco de an\u00e1lisis de concepto de an\u00e1lisis orientado a objetos en su dise\u00f1o antes de seguir adelante.<\/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":[716,914,840],"tags":[1172],"class_list":["post-229111","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-otro","category-tutoriales","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=229111"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229111\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/223990"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}