Prototipos Rápidos con WordPress: Análisis de Concepto
En la publicación anterior, comencé a caminar a través del proceso de tomar la idea de un complemento que lo convirtió rápidamente en algo que funciona dentro de WordPress. Y aunque funciona, no sigue necesariamente ningún principio orientado a objetos, ni está en un lugar en el que podamos seguir agregando funciones fácilmente.
No, este no es un argumento de por qué la orientación a objetos es mejor. Sucede que es mi forma preferida de escribir código, así que lo estoy abordando de esta manera.
Sé que el código de ejemplo que estoy dando es simple y sé que se puede argumentar que algo como esto se puede dejar como está. Pero el objetivo de esto es mostrar cómo tomar un concepto, crear un prototipo y luego moverlo a algo que siga los principios orientados a objetos.
Y, según mi experiencia, es mucho más difícil hacerlo con un ejemplo complejo desde el principio. si pierdes lectores desde el principio, ¿qué esperanza hay de que entiendan lo que viene?
Entonces, dicho esto, vamos a echar un vistazo al código de la publicación anterior y hacer un pequeño análisis de concepto para ver qué podría funcionar bien dentro de una clase y cómo podríamos comenzar a organizarlo usando clases, espacios de nombres, etc.
Análisis de concepto
Siempre que se trata de programación, es muy fácil querer pasar a escribir código de inmediato y luego modificarlo para que se envíe hasta que haga lo que queremos.
Y una vez que funciona, parece que hemos terminado y podemos pasar a la siguiente tarea. Pero para proyectos más grandes, ese no es siempre el caso. De hecho, a menudo es mejor hacer un poco de análisis de concepto de análisis orientado a objetos en su diseño antes de seguir adelante.
Simplemente saltar a la codificación no siempre es el mejor enfoque.
Un caso para el análisis
Caso en cuestión: en el momento de escribir este artículo, uno de mis compañeros de equipo y yo estamos discutiendo si deberíamos extender una clase o escribir una nueva clase para manejar la información de geolocalización para los datos extraídos de la API de Google Maps.
¿Puedo improvisar y escribir algo que funcione? Por supuesto. Pero, ¿se integrará bien con la aplicación? No sin análisis de concepto, planificación y coordinación con el resto del sistema.
Y de eso se trata el propósito del análisis.
Analizando Nuestro Trabajo
Entonces, ¿qué significa esto para el complemento que vimos ayer? En este momento, tenemos lo siguiente:
- una función responsable de crear un meta cuadro y mostrar el contenido dentro de él,
- una función para consultar la base de datos y recuperar las últimas publicaciones más recientes,
- una función para mostrar los resultados en el cuadro meta
- una función para mostrar un mensaje cuando no hay resultados en el cuadro meta
Además, varias de estas funciones están relacionadas con ganchos que forman parte de la API de WordPress. Es decir, la función para crear el cuadro meta está vinculada a WordPress y su función complementaria para representar la pantalla son parte del mismo componente.
Luego tenemos la funcionalidad para consultar la base de datos y tenemos funciones directamente relacionadas con las vistas.
Entonces, ¿cómo se vería esto si tuviéramos que diagramarlo en varias clases y archivos que ayudarían a crear esto de una manera más orientada a objetos?
Sin solución única
No existe una solución única y algunas soluciones son mucho más avanzadas que otras. Pero como estoy tratando de lograr un equilibrio aquí, voy a abordar esto de una manera más simple que trabajar demasiado con la abstracción, la herencia, las interfaces y todo eso.
Centrándonos en lo que tenemos
Por ahora, centrémonos en las clases individuales y las responsabilidades que pueden tener. Por ejemplo:
- Creo que vamos a necesitar una clase que represente el cuadro meta. Este debería ser el responsable de crear el meta box.
- También necesitaremos una clase responsable de mostrar el contenido del metabox. Puede pensar que incluir una función 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íficamente para la visualización y específicamente para el metabox, luego inyectar la visualización en el metabox durante la creación de instancias. Hablaremos más sobre esto más adelante.
En este punto, nuestro diagrama podría verse así:
Desglosando la caja meta.
A continuación, 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.
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í, debemos poder tener una forma de determinar si hay resultados, si no los hay y luego inyectar esos resultados en la vista.
Dada esta información, 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.
Quizás una forma de organizar las clases se vería así:
Consultar la base de datos y preparar mensajes.
La versión final del diagrama puede ser un poco estrecha, pero en última instancia estamos viendo algo como esto:
La organización final de nuestras clases.
A los efectos de la explicación:
- El recuperador de publicaciones solicita a la base de datos las últimas tres publicaciones más recientes.
- El mensajero postal determinará qué mensaje inyectar en la pantalla.
- La pantalla mostrará el mensaje que se ha configurado.
- El cuadro meta mostrará su visualización en el navegador web.
Básicamente, hemos tomado algunas funciones que estaban conectadas a WordPress y las hemos dividido en componentes que pueden comunicarse entre sí, cada uno de los cuales es relativamente fácil de trabajar y no hace más que un solo trabajo.
Convirtiéndolo a código
Ahora que tenemos una idea de cómo podemos convertir el concepto anterior en código, veremos cómo hacerlo en los próximos artículos.
Tenga en cuenta que la forma en que opta por implementar su código o diseñar sus clases puede ser un poco diferente de lo que tengo arriba y puede tener sugerencias sobre cómo organizar mejor lo que está arriba. Si ese es el caso, deja un comentario.
En la próxima publicación, veremos cómo convertir esto en código funcional y, después de eso, veremos cómo organizarlo en espacios de nombres adecuados y una organización de archivos adecuada.
Publicaciones de la serie
- Creación rápida de prototipos con WordPress: del concepto al complemento
- Prototipos Rápidos con WordPress: Análisis de Concepto
- Creación rápida de prototipos: Prototipo a código, Parte 1
- Creación rápida de prototipos: de prototipo a código, parte 2
- Creación rápida de prototipos: Introducción a la carga automática

