Código Limpio. Segunda edición
Autor/a :
Robert C. Martin
Traductor/a : Beatriz Pineda González
Índice
Prólogo Introducción Introducción (de hace mucho tiempo) 1. Código limpio Habrá código Mal código El arte del código limpio Juntarlo todo Leemos más de lo que escribimos La regla de los 'boy scouts' Parte I . Código 2. ¡Limpie ese código! El proceso de limpieza Conclusión Posdata: El Bob del Futuro juega con Grok3 Conclusión de la posdata 3. Primeros principios Todo pequeño, con buenos nombres, organizado y ordenado Un ejemplo más significativo Un último pensamiento 4. Nombres con significado Use nombres que revelen la intención Últimas palabras 5. Comentarios Compensar el fracaso Comentarios buenos Comentarios malos Conclusión 6. Formato El propósito de la aplicación de formatos Formato vertical Formato horizontal Reglas de equipo Reglas de formato de Uncle Bob 7. Funciones limpias ¡Tamaño reducido! Leer el código de arriba abajo: la regla descendente Sentencias switch Funciones limpias: una mirada más profunda Conclusión 8. Heurística de las funciones Argumentos de funciones Command Query Separation Mejor excepciones que devolver códigos de error No se repita Efectos secundarios Programación estructurada Esto es demasiado para tenerlo siempre en mente Conclusión 9. El método limpio Hágalo bien Ejemplo Conclusión 10. Una cosa Refactorización por extracción de métodos A todo esto, ¿qué son las funciones grandes? Conclusión 11. Sea educado La metáfora del periódico La regla descendente: una vez más La montaña rusa de la abstracción Así es como escribimos, pero no como queremos leer 12. Objetos y estructuras de datos ¿Qué es un objeto? Abstracción de datos Antisimetría datos/objetos La ley de Deméter Objetos de transferencia de datos Sentencias switch La compensación OO/procedimental Pero ¿qué pasa con el rendimiento? Conclusión 13. Clases limpias Clases y módulos frente a archivos ¿Qué debería contener una clase? 14. Disciplinas de pruebas Disciplina 1: Desarrollo guiado por pruebas (TDD) Disciplina 2: 'Test && Commit' || 'Revert' (TCR) Disciplina 3: Paquetes pequeños Diseño Disciplina Mantener las pruebas limpias Las pruebas habilitan lo -ible 15. Pruebas limpias Lenguaje de pruebas específico del dominio F.I.R.S.T. Diseño de pruebas Conclusión 16. Pruebas de aceptación La disciplina de las pruebas de aceptación Conclusión 17. IA, LLM y Dios sabe qué más Programación mediante 'prompts' Conclusión Parte II. Diseño 18. Diseño simple YAGNI Cubierto por pruebas Maximizar la expresión Minimizar la duplicación 19. Los principios SOLID SRP: el principio de responsabilidad única OCP: el principio de abierto-cerrado LSP: el principio de sustitución de Liskov ISP: el principio de segregación de interfaces DIP: el principio de inversión de dependencias 20. Principios de componentes Componentes Breve historia de los componentes Cohesión de los componentes Acoplamiento de componentes Conclusión 21. Diseño continuo Cambio continuo Diseño continuo Navegar por las cuatro C del diseño continuo ¿Cuándo más diseñamos? 22. Concurrencia ¿Por qué la concurrencia? Principios de defensa de la concurrencia Actualización en 2025 e informe de campo Conclusión Parte III. Arquitectura 23. Los dos valores del software Mantener las opciones abiertas 24. Independencia Casos de uso Funcionamiento Desarrollo Despliegue Dejar opciones abiertas 25. Límites arquitectónicos ¿Qué líneas trazar y cuándo? Arquitectura de 'plugins' Caso práctico: FitNesse Conclusión 26. Límites limpios 'Framework' de IoT de tercero: mogollón de límites Limite interfaz de usuario/aplicación Límites limpios 27. La arquitectura limpia La regla de la dependencia Conclusión Parte IV. Artesanía 28. Daño No causar daño a la sociedad No causar daño a la función No causar daño a la estructura 'Soft520' Pruebas 29. Sin defectos en comportamiento ni estructura Hacerlo bien Programadores como partes interesadas Hágalo lo mejor posible 30. Demostración repetible Dijkstra Programación estructurada Descomposición funcional Desarrollo guiado por pruebas 'et al.' 31. Ciclos pequeños La historia del control del código fuente Integración continua Ramas frente a 'toggles' Despliegue continuo Construcción continua 32. Mejora incesante Cobertura de las pruebas Prueba de mutaciones Estabilidad semántica Limpieza Creaciones 33. Mantener una productividad alta Viscosidad Gestión de las distracciones Gestión del tiempo 34. Trabaje como un equipo Programación colaborativa Oficina abierta/virtual 35. Haga estimaciones honestas y justas Mentiras Honestidad, exactitud, precisión Lecciones que yo viví Exactitud y precisión Agregación Honestidad Presión 36. Respete a sus colegas programadores 37. Nunca deje de aprender Epílogo Apéndice. El debate del código limpio Presentaciones Longitud de los métodos Resumen de la longitud de los métodos Comentarios Resumen de los comentarios Reescritura de John de PrimeGenerator Historia de dos programadores Reescritura de Bob de PrimeGenerator2 Desarrollo guiado por pruebas Resumen del TDD Observaciones finales Bibliografía Índice alfabético