Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:clean_code_aplicado_paradesarrollos_limpios_y_rentables

Clean Code aplicado para desarrollos limpios y rentables

Notas del curso Clean Code aplicado para desarrollos limpios y rentables del Clúster Tic de Galicia.

  • Horas: 30
  • Fecha Inicio: 11/09/2023
  • Fecha Fin: 22/10/2023

Código empleado durante el curso: https://github.com/cleancodeTrIT/CleanCodeLab

Objetivos

  • Desarrollar aplicaciones fáciles de mantener.
  • Reducir la cantidad de errores y facilitar su detección.
  • Distinguir y aplicar las buenas prácticas de programación.
  • Adoptar la disciplina profesional de un artesano del software.

No se indica, pero el código que se ve durante el curso es TypeScript (superconjunto de JavaScript)

Temario

    • 0.1. Hola Mundo
    • 0.2. Perdona, pero tu código huele
    • 0.3. Software que funciona
    • 0.4. El instructor
    • 1.0. Claridad con el menor esfuerzo
    • 1.1. Estilo y orden
      • Laboratorio: Estilo y orden
    • 1.2 Tamaños y límites
      • Laboratorio: Tamaños y límites
    • 1.3 Definiciones con sustantivos
      • Laboratorio: Definiciones con sustantivos
    • 1.4 Acciones con verbos
      • Laboratorio: Acciones con verbos
    • 1.5 Tarea propuesta Tema 1
      • Tarea Solución Tema 1
    • 2.0. Organización de sentencias
    • 2.1. Declaración, asignación e invocación
      • Laboratorio: Declaración, asignación e invocación
    • 2.2. Estructuras repetitivas y condicionales
      • Laboratorio: Estructuras repetitivas y condicionales
    • 2.3. Funciones puras y métodos de clase
      • Laboratorio: Funciones puras y métodos de clase
    • 2.4. Tarea propuesta Tema 2
      • Tarea Solución Tema 2
    • 3.0. Abstracciones de información
    • 3.1. Cohesión de primitivos
      • Laboratorio: Cohesión de primitivos
    • 3.2. Condiciones y algoritmos
      • Laboratorio: Condiciones y algoritmos
    • 3.3. Tarea propuesta Tema 3
      • Tarea Solución Tema 3
    • 4.0. Abstracciones de lógica
    • 4.1. Cohesión de funciones
    • 4.2. Principios sólidos para finales flexibles
      • TLaboratorio: Srp
      • TLaboratorio: Ocp
      • TLaboratorio: Lsp
      • TLaboratorio: Isp
      • TLaboratorio: Dip
    • 4.3. Tarea propuesta Tema 4
      • Tarea Solución Tema 4
    • 5.0. De programador a artesano
    • 5.1. Hacer las cosas bien
    • 5.2. Disciplina y buenos hábitos

Tests

Tema 2

¿Cuándo debemos refactorizar?

  • Antes de cada push
  • Al finalizar el sprint
  • Constantemente
  • Los viernes

¿Los nombres de las funciones?

  • No importan, lo importante son las variables.
  • Deben empezar por un verbo (idealmente elegido de un diccionario).
  • Deben ser lo más cortos posible.
  • Deben ser lo más descriptivos posible e incluir tipos y visibilidad.

¿Cuándo debemos escribir tests?

  • Antes de refactorizar
  • Al finalizar el sprint
  • Constantemente
  • Los viernes

¿Importa el tamaño?

  • No, nada.
  • Sí, los caracteres por línea y las líneas por fichero.
  • Sólo los caracteres por línea.
  • Depende de tu agudeza visual y agilidad manual.

¿Las herramientas nos ayudan?

  • Sí, mucho cuando las configuramos bien.
  • Sí, pero no tanto.
  • No, nada.
  • El IDE ayuda, lo demás estorba

¿Los nombres de variables?

  • Deben ser lo más descriptivos y significativos posible.
  • Deben ser lo más cortos posible.
  • Deben ser lo más descriptivos posible e incluir tipos y visibilidad.
  • Deben estar en mayúsculas.

¿Hay reglas gramaticales además de las sintácticas?

  • En métodos y flags empezar por Verbos, para lo demás por Sustantivos.
  • Verbos y Sustantivos para métodos.
  • Verbos para métodos, Sustantivos para lo demás.
  • ¿Estás de broma?, Esto no es clase de Lengua.

Las estructuras repetitivas y condicionales…

  • Se pueden anidar indefinidamente mientras los bloques de instrucciones sean cortos.
  • No deben contener bloques muy largos ni anidarse mucho.
  • Si el lenguaje lo permite deben sustituirse por ternarios.
  • Mejor con que tengan condiciones complejas.

Los argumentos de las funciones…

  • Cuantos más argumentos mejor.
  • Mejor con argumentos primitivos.
  • Mejor pocos y evitando primitivos.
  • No influyen en la limpieza.

Las funciones…

  • Deberían retornar siempre un valor
  • Las funciones puras sólo pueden tener un efecto secundario.
  • Cuanto más grande sean mis funciones menos funciones necesito; y eso es mejor.
  • Una función debería hacer una sola cosa, hacerla bien, y hacerla sólo ella.

Final

El modelo de datos

  • Es dónde se expresa más claramente la lógica del negocio.
  • Viene determinado por la base de datos.
  • Es más sencillo tratar con tipos primitivos, las estructuras son de clever code.
  • Es preferible la composición a la herencia.

Las estructuras condicionales y los datos

  • No tienen nada que ver.
  • Puedes sustituir condiciones por búsquedas en estructuras.
  • Nunca debemos usar if ni switch, siempre es mejor factorías, abstracciones y herencias.
  • El switch es mala cosa, mejor encadenar if y else if.

Las variables de tipo primitivo

  • Son una mala práctica sólo si son argumentos de funciones.
  • Son una buena práctica.
  • Son una mala práctica, mejor encapsularlos en tipos compuestos.
  • No influye en la claridad del código

Sobre las las clases para crear objetos

  • Es dónde se expresa más claramente la lógica del negocio.
  • La herencia es lo mejor de las clases.
  • Deberían de tener la menor cohesión posible.
  • Cuanto más grandes mejor, porque así hay menos.

Las clases:

  • No deberían tener datos
  • No deberían tener lógica
  • Deberían tener lógica asociada con los datos.
  • Deberían tener el mismo número de métodos que de propiedades.

Los principios SOLID

  • Hay que aplicarlos todos siempre.
  • Están desfasados.
  • Usados convenientemente mejoran la flexibilidad del código.
  • Sólo se aplican para proyectos dónde hay un departamento de arquitectura.

EL principio SOLID más importante es

  • El de Responsabilidad única para fomentar la cohesión SRP
  • El Open/Close para minimizar conflictos en git OCP
  • El de Liskov para evitar la herencia múltiple LSP
  • El de Segregación de interfaces para escribir menos código ISP

La artesanía del software…

  • Promueve la mejora constante de nuestras habilidades.
  • Genera satisfacción por el trabajo bien hecho, a veces con reconocimiento externo.
  • Se consigue con la adquisición de buenos hábitos impulsados con disciplina.
  • Todas las anteriores son ciertas.

¿Qué es el código artesanal?

  • Código que se escribe con cuidado y atención a los detalles.
  • Código fácil de modificar.
  • Código fácil de testear.
  • Todas las anteriores son ciertas.
informatica/programacion/cursos/clean_code_aplicado_paradesarrollos_limpios_y_rentables.txt · Última modificación: por tempwin