1 – Introducción al Clean Code
Introducción al Clean Code
¿Qué es Clean Code?
Definición y Principios
Ejemplo de Código Limpio
Importancia del Clean Code
Beneficios del código limpio
Mejora la legibilidad del código
Facilita el mantenimiento del software
Minimiza los errores y bugs
Facilita la colaboración en equipo
Fomenta la reutilización de código
Tranquilidad mental
Principios fundamentales del Clean Code
Instalación de Java
1. Descarga del JDK
2. Instalación
3. Verificación de la instalación
Instalación de IntelliJ IDEA
1. Descarga de IntelliJ IDEA
2. Requisitos del Sistema
3. Instalación
4. Configuración inicial
Primer Proyecto en IntelliJ IDEA
Primer programa Clean Code
Resumen
2 – Nombres significativos
Nombres significativos
Nombres de variables y constantes
Número de palabras en nombres de variables y constantes
Nombres de métodos
Utilizar verbos en los nombres de métodos
Ser específicos y evitar abreviaturas
Nombrar métodos basados en el nivel de abstracción
Ejemplos de prefijos comunes para nombres de métodos
Longitud de los nombres de métodos
Documentar métodos con comentarios si es necesario
Consejos prácticos para dar nombres a los métodos
Nombres de clases y objetos
Convenciones y consistencia
Evitar abreviaturas y nombres genéricos
Nombres de paquetes y módulos
Ejemplo de estructura de paquetes
Nombres de módulos
Repaso de la nueva funcionalidad module de Java 9
Convenciones de nomenclatura
Nombres de variables
Nombres de métodos
Nombres de clases y interfaces
Nombres de constantes
Nombres de paquetes
Ejemplos en proyectos Open Source
Uso del inglés y/o español en el código
Ejemplo práctico: refactorización de nombres
Resumen
3 – Clases, paquetes y proyectos limpios
Clases, paquetes y proyectos limpios
Introducción
Métodos limpios
Longitud de los métodos
Unicidad de propósito en métodos
Nivel de abstracción en métodos
Argumentos de los métodos
Manejo de errores en métodos
Diseño de clases limpias
Responsabilidad única en clases
Cohesión y acoplamiento en clases
Paquetes y proyectos limpios
Importación limpia de paquetes
Directrices para Importaciones Limpias
Ejemplo Práctico
Estructura limpia de paquetes
Estructura de proyectos limpia
Gestión de paquetes con Maven
Propuesta de estructura de directorios para proyectos Java
Ejemplos de proyectos Open Source
Ejemplo práctico
Resumen
4 – Formato y estilo de código
Formato y estilo de código
Introducción
Indentación y espacios en blanco
Ejemplo de indentación
Líneas y espacios en blanco
Ejemplo de uso de espacios y líneas en blanco
Formato de los corchetes
Tamaño de las líneas de código
Líneas cortas al comparar versiones
División de líneas largas en varias instrucciones
Consejos para el formateo de líneas largas
Parámetros y argumentos
Directrices para el uso de comentarios
1. Comentarios útiles y necesarios
2. Evitar comentarios obvios
3. Comentarios de propósito
4. Uso de Javadoc para documentación
5. Mantén los comentarios actualizados
6. Evita comentarios demasiado extensos
Estructura de archivos y paquetes
Herramientas para formateo automático
Ejemplo práctico
Resumen
5 – Manejo de errores y logging
Manejo de errores y logging
Manejo de errores
Excepciones vs códigos de error
Limpieza en el manejo de errores
Principio de Separación de Responsabilidades
SoC en manejo de errores y logging
Técnicas para pruebas de errores
Logging
¿Qué es el logging?
Niveles de log
Mejores prácticas de logging
Clean logging
Ejemplo práctico
Resumen
6 – Comentarios y documentación
Comentarios y documentación
¿Cuándo comentar el código?
Comentarios útiles
Tipos de comentarios útiles
Errores comunes
Comentarios decorativos
Alternativas a los comentarios decorativos
Malas prácticas al documentar
El comentario TODO
Buenas prácticas con TODO
Alternativas a TODO
Documentación en Java
Introducción a Javadoc
¿Cuándo SÍ tiene sentido usar Javadoc?
Uso de Javadoc
Conclusión: ¿Javadoc sí o no?
Documentación de APIs y módulos
¿Qué es una API?
Ejemplo: API de un servicio meteorológico
¿Cómo documentar las APIs según Clean Code?
¿Qué es un módulo?
Ejemplo de módulo pequeño
Ejemplo de módulo intermedio
Ejemplo de módulo grande
¿Cómo documentar los módulos?
Herramientas y buenas prácticas
Decálogo para una documentación limpia
Ejemplo práctico
Resumen
7 – Pruebas unitarias, cobertura y TDD
Pruebas unitarias, cobertura y TDD
Introducción a las pruebas unitarias
Mi primer test unitario
Escribiendo pruebas efectivas
Principios de TDD
Herramientas y frameworks de pruebas
Algunas anotaciones útiles de JUnit 5
Uso de mocks con JUnit y Mockito
Mantenimiento de pruebas
Ejemplo de mal mantenimiento
Cobertura de código
Ejemplo visual
Herramientas para la cobertura de código (Jacoco)
Ejemplo práctico
Resumen
8 – Refactorización y análisis de calidad
Refactorización y análisis de calidad
¿Qué es la refactorización?
Primer ejemplo de refactorización
Indicadores de código que necesita refactorización
Técnicas comunes de refactorización
Refactorización segura con pruebas
Herramientas para la refactorización (IntelliJ IDEA)
Introducción a SonarQube y análisis estático de código
Instalación y uso de SonarQube en IntelliJ IDEA
Calistenia de objetos
Complejidad ciclomática
Ejemplo de reducción de la complejidad ciclomática
Ejemplo práctico
Resumen
9 – Patrones de diseño, antipatrones y principios SOLID
Patrones de diseño, antipatrones y principios SOLID
Introducción a los patrones de diseño
Patrones de diseño estructurales
Patrones de diseño de comportamiento
Principios SOLID
Antipatrones de diseño: identificación y solución
Identificación
Antipatrones comunes
Antes de terminar…
Ejemplo práctico
Reflexión final: la IA y el futuro de la programación

Valoraciones
No hay valoraciones aún.