Ejemplos de restauración del código PHP para una mejor legibilidad


El código de restauración es cuando reestructuras el código existente sin cambiar su comportamiento externo.Básicamente, su objetivo es mejorar el código “malo” sin cambiar la funcionalidad básica.Hay muchas guías sobre la reenfocatorización de su código. Sin embargo, encuentro que muchos de ellos hablan sobre la ideología del código bien escrito y estructurado, sin mostrarle cómo restaurar el código “malo” en el “buen “Código.Puede hablar sobre conceptos de alto nivel, como legibilidad, extensibilidad, Mainabilidad, Testability, Baja Complejidad, etc., que son todos los propósitos válidos del proceso de restauración, pero a menudo no muestran ejemplos sobre cómo se ve realmente esto.
En este artículo, no hablaré cuándo debe restaurar (personalmente creo que debería hacerlo cada vez que cumpla con un código incorrecto), no hablaré sobre por qué debe restaurar (reducir la deuda técnica). Más bien, quiero ver algunos principios comunes y prácticos que puede aplicar al restaurar y dar ejemplos sobre cómo se ven con ejemplos de código real. Para el propósito de este artículo, usaré el código PHP (porque WordPress está escrito en PHP), pero estos principios se aplicarán a cualquier lenguaje de programación. No repita (en seco) probablemente el principio de programación más popular que probablemente escuchará es “no repetir” (seco). Si descubre que duplica el mismo código varias veces, entonces probablemente debería encapsular la funcionalidad en su propia clase o función y usar esa clase o función para evitar repetir. Esto significa que debe remediar el código en un lugar cuando el error inevitable aparece unos meses después de la línea. Un buen ejemplo a este respecto es cuando dos clases diferentes, pero similares, requieren parte de la misma funcionalidad. En lugar de duplicar el código en dos clases diferentes, puede crear una clase abstracta que tenga la funcionalidad común y luego hacer las otras dos clases abstractas de extensión. P.ej:
Se convierte en:
Este es solo un ejemplo simple de cómo puede estructurar su código para evitar la duplicación. División de funciones complejas Otro problema de programación común que puede conducir a deudas técnicas y difíciles de leer son las funciones o métodos complejos. “Los programas deben estar escritos para que las personas los lean y solo por casualidad para que los automóviles los ejecuten”. – Harold Abelsona hace que el código sea fácil de leer y comprender por otras personas es de la mayor importancia, por lo que una forma de tratar funciones complejas es dividirlos en piezas más pequeñas, más fácil de entender (y testible). Aquí hay un ejemplo de una función compleja. No se preocupe por comprender todo lo que hace. Observe lo complejo que busca echar un vistazo.
No sería mucho más fácil si toda la función se viera así:
Esto es mucho más fácil de leer y comprender. Es sorprendente la diferencia que simplemente puede hacer la división de complejos de bacalao grandes y complejos.
Otra cosa a tener en cuenta aquí es que no debe preocuparse demasiado por tener funciones largas y descriptivas cuando comparte funciones complejas como esta. Recuerde que el propósito es la legibilidad humana, por lo que tratar de ser demasiado conciso con los nombres de sus funciones puede hacer que el código sea más difícil de entender. Por ejemplo: $ this-> get_att_inf ($ post_id); Es más difícil de entender que: $ this-> get_attachment_s3_info ($ post_id); División de condiciones complejas ¿Alguna vez has visto un gran estado mostrando algo como:
Las piezas de código largas con condicionales son difíciles de leer y comprender. Una solución simple para esto es la extracción del código condicionado en métodos claramente llamados. P.ej:
Esto hace que su código sea mucho más fácil de entender para un futuro propietario. Mientras se llame claramente el método condicional, debería ser fácil entender lo que hace sin inspeccionar el código real. Esta práctica también se conoce como la programación declarativa. Reemplazar las condiciones vestidas con las cláusulas de la guardia Otra forma de restaurar las condiciones complejas es el uso de lo que se conoce como “cláusulas de guardia”. Las cláusulas de la cerca simplemente extraen todas las condiciones que conducen a la llamada para una excepción o el retorno inmediato de un valor del método y lo colocan al comienzo del método. Por ejemplo: aquí puede ver qué tan rápido podría llegar al “infierno condicionado” si el método se vuelve más complejo. Sin embargo, si restauramos este método para usar las cláusulas de guardia, se vería así:
Ahora, incluso si el método se vuelve más complejo, no será un dolor de cabeza de mantenimiento. Recrocratización de bucles y condiciones utilizando métodos funcionales Este es un tipo de restauración ligeramente más avanzado, que se usa más intensamente en lenguajes y bibliotecas de programación funcional (este tipo de funciones se usa mucho en el campo JavaScript). Tal vez hayas oído hablar de funciones como Map and Reduce y te has preguntado qué son y cómo usarlas. Parece que estos métodos pueden mejorar dramáticamente la legibilidad de su código.

Este ejemplo está inspirado en la gran filmación de Adam Wathan sobre este tema (debería ver su libro futuro) y se basa en el uso de colecciones de Laravel. Sin embargo, hemos adaptado el ejemplo para trabajar con funciones PHP estándar. Veamos dos escenarios comunes y veamos cómo se pueden mejorar utilizando métodos funcionales. Nuestro ejemplo a continuación se hace cargo de muchos $ eventos de una API y calcula una puntuación basada en el tipo de evento: lo primero que podemos mejorar es el reemplazo del bucle foreach con una función de mapa. Se puede usar una función de mapa cuando desee crear una nueva matriz a partir de una matriz existente. En nuestro ejemplo, creamos una matriz $ tipos de la matriz de $ eventos. PHP tiene una función Array_Map que nos permitirá escribir el primer foreach en el código anterior de la siguiente manera:
Nota: debe ejecutar PHP 5.3+ para usar funciones anónimas como esta. Lo segundo que podemos hacer es desglosar la declaración Big Switch para que sea un poco más fácil de procesar.
Pero podemos dar un paso más aquí y usar el PHP Array_ Reduce para calcular $ puntaje en una función. Una función reduce la toma de una matriz de valores y los reduce a un solo valor. Haremos esto aquí para calcular $ Score.
Al armar todo, tenemos ahora:
Mejor. Sin bucles o condicionales a la vista. Puede imaginar cómo, si necesita más complejidad para encontrar $ tipos o para calcular la línea $ en la línea, sería fácil restaurar el mapa y reducir las funciones de las características en métodos separados. Esto ahora es posible porque ya hemos reducido la complejidad a una función.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *