Hace unos meses, compartí mi opinión sobre el “programador pragmático: de ternero a maestro”, un libro que, como dije, incluye buenos consejos y buenas prácticas de programación. Si aún no ha leído el libro, continúe y hágalo de inmediato, es muy agradable e instructivo. De todos modos, en mi publicación anterior te dije que tengo un segundo libro sobre el estante esperándome: código limpio, ¿recuerdas? Bueno, ¡me alegra decir que ya lo leí y me gusta incluso más que el “programador pragmático”! Echemos un vistazo al libro y que creo que son las mejores partes, ¿verdad?
La presentación general del libro de código limpio se basa en una premisa muy interesante: “Incluso el código malo funciona”. Es decir, incluso si el código no está limpio y ordenado, si es caótico y difícil de entender, si se escribe mal … ninguna de estas cosas debería tener un impacto negativo en su funcionamiento: el código puede funcionar correctamente. Ahora, estarás de acuerdo conmigo y el autor del libro, Robert C. “Tío Bob” Martin, para hacer frente a tal código sería un gran problema para cualquier programador, ¿verdad? ? Los componentes de software juegan un papel extremadamente importante en cualquier empresa. Si su código fuente no está limpio y ordenado, la cantidad de tiempo y los recursos brutales que tendrá que invertir en él cada vez que tenga que cambiar, adaptarlo o corregirlo será brutal e incluso podría destruir las finanzas de la compañía. Por lo tanto, este libro le enseña cómo escribir un código limpio y cómo detectar el código que se puede mejorar.
El libro está dividido en tres partes. Primero, describa los principios, estándares y buenas prácticas que hacen un código fuente limpio. En la segunda parte, tiene muchos estudios de casos (cada vez más complejos) en los que comienza desde el código escrito malo y lo muele poco a poco hasta que alcanza una solución elegante y eficiente. La última parte es una lista de heurísticas y “olores” reunidos durante la creación de estudios de casos, que lo ayudan a detectar cuándo y cómo se puede mejorar un fragmento. En otras palabras, es una base de conocimiento que describe cómo escribir, leer y limpiar el código. Si lee el libro con cuidado e intenta aprender todas las lecciones que finalmente incluye, se deshará de él:
Cómo marcar la diferencia entre el código bueno y el mal
Cómo escribir un buen código y cómo convertir el código malo en buen código
Cómo crear buenos nombres, buenas funciones, buenos objetos y buenas clases
Cómo se forma el código para una legibilidad máxima
Cómo implementar la gestión completa de errores sin ocultar la lógica del código
Cómo probar un desarrollo unitario y de práctica basado en la prueba
Bastante genial, ¿verdad? El libro está organizado en los siguientes capítulos:
Código limpio. Una introducción a la diferencia entre el código ininteligible y el código limpio. Creo que la imagen que abre el capítulo es bastante divertida y describe claramente qué esperar del libro:
La única medición de calidad de código válido: WTF/Minute. Fuente.

Nombres significativos. Cómo asegurarse de que nuestras funciones, variables, clases … en resumen, todos los componentes de nuestro código sean inteligibles y explican por sí mismos.
Funciones. Consejos para escribir mejores funciones: corto, atómico, simple, algunos parámetros, sin efectos secundarios …
Comentarios. Un capítulo que prácticamente le dice por qué no debe usar comentarios. ¿Por qué? ¡Leer el libro! ? Formato. Más consejos para formatear el código (espacio, sangría, etc.). Si lee este libro para convertirse en un mejor desarrollador de WordPress, puede omitir este capítulo: WordPress ya tiene algunas guías de estilo excelentes que abordan esto.
Objetos y estructuras de datos. Algunos consejos y principios con respecto a la abstracción de datos para reducir (o incluso eliminar) el acoplamiento.
Error de manejo. Un gran capítulo (uno de mis favoritos, de hecho) con algunos consejos útiles sobre cómo agregar la administración de errores en nuestro código. Esencialmente, cubre una realidad triste: la gestión de errores es un accesorio: lo necesitamos, pero probablemente no esté relacionado con la funcionalidad principal de nuestro software. Como resultado, agregarlo a nuestro código hace que el código parezca “sucio” e inútil. Bueno, este capítulo aprende cómo hacerlo limpio.
Límites. Uno de los problemas más difíciles que enfrentan los programadores (y esto es especialmente cierto en WordPress) es nuestra dependencia de bibliotecas o servicios externos: si cambia, las cosas pueden dejar de funcionar. Este capítulo identifica diferentes escenarios en los que podemos tener problemas de compatibilidad cuando confiamos en las terceras soluciones y le mostramos cómo eliminarlos o minimizar su impacto.
Pruebas unitarias. No puedo decir nada sobre este capítulo: ya he discutido su contenido en las publicaciones anteriores.
Clases. En los primeros capítulos, el libro cubre los bloques básicos de codificación: funciones, estructuras de datos, variables, etc. Debido a que el código limpio requiere una buena organización, el libro dedica y algunos capítulos para discutir este tema. En este capítulo se centra en la programación orientada a objetos y su concepto de clases, ofreciendo algunos consejos básicos sobre “tamaño” y “responsabilidades”. Este capítulo es más abstracto que el anterior porque explica el concepto de “un sistema”, las interacciones entre los diferentes componentes, los desafíos que implica … incluso si es más complicado que el resto, vale la pena (especialmente si trabajas con más grande). Componentes de software como, ya sabes, WordPress Core).
Apariencia. En este capítulo, el autor ofrece cuatro pautas. Síguelos y su código será más limpio. Esencialmente, un diseño es “simple” si siguen estas reglas:
Realiza todas las pruebas
No contiene duplicaciones
Expresa la intención del programador
Minimiza el número de clases y métodos
Competencia. Un capítulo dedicado a los problemas encontrados en los sistemas competidores y sus soluciones.
Refinamiento sucesivo. Un estudio de caso en el que el autor presenta un código malo y lo refina paso a paso hasta que se convierta en un código limpio.
Junit interno. Otro ejemplo práctico. En este caso particular, el autor se hunde en el código fuente de JUNIT y tiene algunas mejoras posibles.
Restauración en serie. Finalmente otro estudio de caso. En este caso, comenzamos con un código que Martin define como un “buen código”. Pero eso no le impide proponer más mejoras.
Olores y heurísticos. Una fantástica compilación de heurísticas y olores que lo ayudará a identificar los componentes de su código que deberían mejorarse. No debe leer este capítulo: debe mantenerlo cerca de usted y usarlo como referencia. ¡Creo que estos olores y heurísticas son invaluables! Los mejores 3 consejos, este libro es fantástico, está muy bien escrito y tiene muchos trucos que me gustaría saber y aplicar al escribir código … pero creo que leer el libro Y estar dispuesto a aplicar sus lecciones es el primer paso para convertirse en un mejor programador. !
Ahora, como prometí, aquí tienes las mejores 3 partes del libro:
? Bronce. “Los comentarios no compensan el código malo”. Como dice Martin, “una de las motivaciones más comunes para escribir comentarios es el código malo”. Piense: acabas de escribir un nuevo módulo y, bueno, funciona, pero es prácticamente un desastre. Así que lo miras y dices: “¡Oh, mejor comento esto!” ¡No! ¡Será mejor que lo limpies! Nunca debe necesitar un comentario para comprender un código: debe explicarse por sí mismo. Y eso se debe a que un comentario en su código crea más problemas que resueltos. Por un lado, se puede exceder el comentario y no corresponder al código. Pero incluso si este no es el caso, el cambio del código significa que tendrá que actualizar el comentario, para que sea “sincrónico” con el comentario … ¡y este es un trabajo adicional! Por otro lado, los comentarios pueden ser un pavo real.
Por ejemplo, considere este pequeño fragmento: // verifique si el empleado es elegible para beneficios completos
If ((empleado.steaguri & hourly_flag) && (empleado.vârsta> 65)) ¿no es la próxima vía? If (Employee.IseligibleForflBenefits ()) solo tome unos segundos para explicar la mayor parte de su intención en el código. En muchos casos, todo se trata de crear una función cuyo nombre dice lo mismo que su comentario. Y así es como haces que tu código sea más limpio y mejor. Descargo de responsabilidad. A veces necesitarás comentar sobre tu código. Por ejemplo, si crea una API, es obvio que debe estar bien documentado para que los usuarios puedan usarlo de manera efectiva; Pero de todos modos, los nombres de sus funciones y parámetros deben ser lo más explícitos y claros posible. Plata. “Las funciones no deberían tener efectos secundarios”. “Los efectos secundarios son mentiras. Su función promete hacer algo, pero hacer otras cosas ocultas “. No podría estar de acuerdo con esta declaración. Cuando una función depende y manipula las variables globales, es muy difícil analizar, comprender y reparar el comportamiento irregular. Y esto es algo que vemos mucho en WordPress Core: hay muchas variables y objetos globales. Por lo tanto, creo que este consejo es muy importante para todos los desarrolladores de WordPress: debemos evitar los efectos secundarios siempre que sea posible.
¡No solo las variables globales pueden conducir a efectos secundarios inesperados, sino también los parámetros de salida de una función! Cuando esto sucede, el valor de uno o más parámetros cambia después de llamar a una función, que es claramente un comportamiento inesperado. En general, todos asumimos que los parámetros de las funciones son solo variables de entrada. La única forma de saber que una cierta variable cambiará cuando se use como parámetro de una función es a través de su documentación y, bueno, acabo de ver que los comentarios no deberían ser necesarios, ¿verdad? Para hacerle una idea clara del problema, eche un vistazo al siguiente ejemplo: Public Class Uservalidator {

…
Public boolean checkPassword (String UserName, String Password) {
Usuario user = usergateway.findbyName (nombre de usuario);
if (user! = user.null) {
if (user.haspassword (contraseña)) {
Session.initialize ();
devuelve verdadero;
}
}
devuelve falso;
}
…
} ¿Puedes ver el efecto secundario? ¡Exacto! El efecto secundario es el llamado a session.initialize (). El usuario llama a una función que, aparentemente, debe verificar la contraseña, por lo que el usuario espera que la función haga lo que dice solo. Entonces, ¿por qué inicialmente inicialmente una sesión? ? ¡Nadie lo sabe! Si este es el comportamiento que queremos, otro nombre lo mejoraría: CheckPasswordInitializeSession
? Oro. “Nombre con importancia”. Los nombres son todo en el software. Después de todo, la programación no significa nada más que la descripción de un sistema en un lenguaje formal, lo que significa que los conceptos y los nombres juegan un papel extremadamente importante. ¡Piensa que un segundo nombre está en todas partes! Variables, argumentos, funciones, clases, archivos, directores … ¡todos se llaman! Entonces, ¿cuánto tiempo invierte para decidir cómo llamar a algo? ¿Usas el primer nombre que me viene a la mente? Creo que el segundo capítulo del libro es notable: está lleno de consejos útiles que creo que deberían aplicar a todos los programadores. Los siguientes son solo algunos ejemplos de estos consejos: use nombres que revelen la intención. ¿Cuántas veces ha encontrado una variable llamada D seguida de un comentario que explica qué es? A veces los programadores son flojos … ¡y no deberíamos serlo! Use otro nombre, como Elapstimeldays, DaysSincrecion o FileageIndays. Realmente no importa el nombre, siempre que sea claro y significativo.
Evite la información errónea. El nombre debe proporcionar información real: no debe mentir. Por ejemplo, si tenemos un conjunto de cuentas, no nombres la variable de la lista ACCOOUNTL; dicho nombre le dice al programador que se implementa como una lista y que puede no serlo. Un mejor nombre serían cuentas.
Hacer distinciones significativas. A veces, debido a las limitaciones del lenguaje, no podemos llamar a una cosa usando la palabra que queremos. Por ejemplo, si queremos nombrar una variable, clase, no podemos, porque es una palabra clave reservada. Para superar este problema, tendemos a escribir la palabra mal y llamarla a cambio Klass o Clazz. Esta es una mala idea. En estas situaciones, debemos usar un sinónimo o similar. Otro ejemplo ordinario es la situación en la que tenemos dos variables con el mismo tipo y solo las nombramos por igual y agregamos un número al final: String1 y String2. ¿No sería mejor si los llamáramos fuente y destino? Mira lo fácil que es adivinar lo que harán, una vez que los nombres se configuran correctamente. Use nombres pronunciados. El ejemplo incluido en el libro es hilarante: una compañía tenía una variable llamada Genymdhms (fecha, año, mes, día, hora, minuto y segundo), por lo que sus empleados han caminado diciendo “Gene Emm Dee aich Emm Ess”. Programadores, diseñadores, analistas … Todos usaron ese estúpido nombre y escucharon cosas como “¡Hola, Mike, mira! ¡Gen-Yah-Mudda-Hims se establece en la reunión mañana! ”. ¡¿Que?! Claro, es divertido, pero es un mal nombre. ¿Por qué no usaron un nombre en inglés mejor y puro como GeneratientImestam? “Oye, Mike, ¡mira! ¡La marca de tiempo de la generación se establece mañana!
Los nombres de los métodos deben ser verbos o expresiones verbales. No es una sorpresa aquí: hay muchos ejemplos de esta regla en WordPress: have_posts, get_the_author o is_single.
Elija una palabra sobre el concepto.A veces, el mismo concepto se puede expresar utilizando diferentes sinónimos: buscar, obtener o recuperar;Eliminar, quitar o basura.En estos casos, siempre debe intentar usar el mismo concepto.De esta manera, su código será más fácil de entender y reducirá su volumen de trabajo mental. ¡Y muchos más!
Mi opinión brevemente, Clean Code es un libro divertido y educativo.Le recomiendo que lo compre ahora y lo agregue a su estante personal.Los consejos y los trucos que contiene son muy valiosos.Y créeme cuando le digo que el salto de calidad entre el código que escribe antes y después de leer este libro es enorme.¿Ya lo has leído?Qué pensaste?¿Todavía tienes alguna recomendación para mí?Imagen presentada por Joel Filipe a través de Unsplash.
Código limpio: consejos para convertirse en un mejor desarrollador de WordPress (ii)
Tags Código limpio: consejos para convertirse en un mejor desarrollador de WordPress (ii)
homefinance blog