Aplicando OOP al tema de WP
La programación orientada a objetos o OOP (para los angloparlantes) es una doctrina que permite hacer el código más mantenible y escalable. Lo cual en teoría hace las cosas más fáciles al momento de editarlo.
Yo por mi parte intente de llevar estos principios a mi tema, de tal manera que al momento de agregar cosas a él fuera más sencillo. Intente en la medida de lo posible implementar patrones de diseño para simplificar su realización, también trate de implementar los principios SOLID en mi código y TDD.
Definiendo el tema.
Primeramente, intente utilizar UML (Universal Modeling Language). Posiblemente no lo implemente de la mejor manera, pero trate de que mi tema tuviese una estructura como la que se puede ver aquí.
Comenzar con diagrama ayuda a crear el código que realmente se necesita, a organizar ideas, y descartar cosas que no hagan falta. El diagrama lo cree en figma, una excelente herramienta para maquetar software de forma colaborativa.
Aplicando patrones OOP
Una clase que fuera el administrador principal, en otras palabras, utilizar el patrón singleton. Luego decidí que sería bueno que las partes del tema estuviesen divididas en 3 clases distintas. La primera las opciones, las cuales utilice un patrón tipo «strategy«, la mayor parte iba a ser igual, pero la parte que registraba la opción cambiaria dependiendo de lo que se necesitara.
Luego las funcionalidades, en las cuales use el patrón «factory«. Introduciendo la información necesaria recibo un objeto con todas sus propiedades y métodos.
Para las vistas, use el patrón «facade«. Al mismo tiempo esta clase tendría la opción de albergar clases en su interior, parecido al patrón «Decorator«, a mí en lo personal me gusta decirle patrón matroshka, tipo esas muñequitas rusas que vienen una dentro de otra.
Use TDD (Test driven development) para crear el software. Cree unas pruebas unitarias para utilizar mis clases y las comprobé utilizando PHPUnit, aparte de eso utilice Xdebug en localwp, de esa manera pude probar mi código.
Principios SOLID.
En el grafico siguiente se explica que significa cada letra. No me detendré a explicarlos, pero pueden encontrarlos acá. Todo lo anterior antes mencionado supondría aplicar estos principios. Ejemplo:
- Al dividir los archivos de código según sus funcionalidades aplicaríamos la «S».
- Al utilizar clases hijas, como en el patrón «factory» aplicaríamos la «O».
- En las funcionalidades las hijas funcionan igual que el padre. Aplicaríamos «L».
- En las opciones, solo usamos las interfases que realmente se necesitan. Aplicaríamos «I».
- En las vistas, usamos los template parts como subclases, estas son inyectadas como dependencias. Aplicaríamos «D»
Finalmente, este articulo no es un ensayo minucioso, así que invito a cualquiera, que revise el código y me de sus opiniones de como implementar OOP. El repo se pude encontrar aquí y acá explico cómo cree el tema.