CursosEmpresasBlogLiveConfPrecios

Deuda técnica y refactorización de código

Clase 1 de 24 • Curso de Clean Code y Buenas Prácticas con JavaScript

Clase anteriorSiguiente clase

Contenido del curso

Introducción al Clean Code

  • 1
    Deuda técnica y refactorización de código

    Deuda técnica y refactorización de código

    Viendo ahora
  • 2
    Reglas del diseño simple

    Reglas del diseño simple

    02:49 min
  • 3
    Qué es Clean Code

    Qué es Clean Code

    02:18 min

Nombre y uso de las variables

  • 4
    Uso correcto de var, let y const

    Uso correcto de var, let y const

    12:13 min
  • 5
    Reglas para la nomenclatura

    Reglas para la nomenclatura

    05:33 min
  • 6
    Cómo nombrar según el tipo de dato

    Cómo nombrar según el tipo de dato

    11:50 min
  • 7

    Nombres de Variables y Funciones Correctos en JavaScript

    00:28 min

Ámbito de las variables

  • 8
    Ámbito global

    Ámbito global

    02:40 min
  • 9
    Ámbito local o de función

    Ámbito local o de función

    03:40 min
  • 10
    Ámbito de bloque

    Ámbito de bloque

    05:39 min
  • 11
    Ámbito estático

    Ámbito estático

    04:17 min
  • 12
    Hoisting

    Hoisting

    07:42 min

Funciones

  • 13
    Declaración y expresión de funciones

    Declaración y expresión de funciones

    03:52 min
  • 14
    Parámetros y argumentos

    Parámetros y argumentos

    16:04 min
  • 15
    Funciones de flecha y el this

    Funciones de flecha y el this

    10:01 min

Clases

  • 16
    POO con ES6 (constructores, métodos y herencia)

    POO con ES6 (constructores, métodos y herencia)

    07:40 min
  • 17
    Herencia en JavaScript

    Herencia en JavaScript

    09:45 min
  • 18
    Tamaño reducido (responsabilidad única)

    Tamaño reducido (responsabilidad única)

    06:36 min
  • 19
    Organización

    Organización

    03:23 min

Optimizaciones

  • 20
    Cuándo usar comentarios

    Cuándo usar comentarios

    04:09 min
  • 21
    Formato coherente (codear en equipos)

    Formato coherente (codear en equipos)

    03:37 min
  • 22
    Principio DRY

    Principio DRY

    06:02 min
  • 23

    Tipos de Algoritmos y Complejidad Big O en JavaScript

    03:09 min

Cierre

  • 24
    Sigue aprendiendo JavaScript

    Sigue aprendiendo JavaScript

    00:55 min
  • Tomar el examen del curso
    • Carina Payleman

      Carina Payleman

      student•
      hace 3 años

      Estoy a full con las rutas y cursos de JS + el reto de #30díasdeJS, y estaba buscando justamente este tema!!! Platzi no decepciona con sus lanzamientos 💛💚

        José Rodrigo Álvarez Herrera

        José Rodrigo Álvarez Herrera

        student•
        hace 3 años

        Definitivamente JS es lo que más completo tiene Platzi, desde front, backend, algoritmos, patrones de diseño, etc.

        Winslow Taylor Geldres Oliveros

        Winslow Taylor Geldres Oliveros

        student•
        hace 3 años

        COMO TE FUEEEE ??? 👀

      Humberto Guardado

      Humberto Guardado

      student•
      hace 2 años

      hOLA, somos Jose y Perla, casi de setenta años, entre los dos tenemos mas de 140 años de edad. Jeje.

      Hemos aprobado 69 cursos, sobre temas que nos interesan, ya hicimos nuestro sitio web, aprendimos a usar ChatGPT, depuramos nuestro Python, conocimos otros lenguajes, hemos hecho nuestros primeros juegos educativos.... guau la lista no termina sobre lo que hemos aprendido en Platzi. Lo recomendamos.

        José Antonio Sterling Sánchez

        José Antonio Sterling Sánchez

        student•
        hace 2 años

        wow que gran aporte sobre su trayecto en platzi. Es sorprendente como personas como ustedes han logrado esto.

      Jose Gabriel Argüello

      Jose Gabriel Argüello

      student•
      hace 3 años

      Deuda tecnica y Refactorizacion de código

      Nuuestro código debe ser simple y directo, debería leerse con la misma facilidad que un texto bien escrito.

      Tipos de deuda técnica:

      • Imprudente y deliberada
      • Imprudente e inadvertida
      • Prudente y deliberada
      • Prudente e inadvertida

      ¿Cómo pagar las deudas?

      Refactorizando el código, esto es mejorar el código sin alterar su comportamiento para que sea mas entendible y tolerante a cambios.Y es importante que el código tenga tests ( units o integration tests ) automáticos que validen el comportamiento del código.( Para no romperlo .... 🤣 )

      ¿Cuándo refactorizar?

      Cuando hay código de baja calidad ( duplicación de código, funciones con mas de una acción) o se detecta cualquier otro tipo de code smell ( código duplicado, métodos o clases demasiado grandes y complejos, falta de cohesión entre diferentes partes del código, uso excesivo de condicionales y bucles anidados, por ej.)

      LEONARD CUENCA

      LEONARD CUENCA

      student•
      hace 3 años

      Clase 1: Deuda técnica y refactorización de código

      Notas

      • Nuestro código debe ser simple y directo, debería leerse con la misma facilidad que un texto bien escrito.
      • Grady Booch Entusiasta del diseño de patrones
      • 1992 fue implementado el concepto de Deduda Tecnica por Ward Cunningham -> coautores del maniesfiesto agil
      • La deuda técnica en si no es mala, se deja para poder liberar un producto mas agíl, con la promesa que se va pagar esa deuda

      Tipos de deuda técnica:

      • Imprudente y deliberada -> Se da cuando el desarrollador actua de manera consciente e imprudente, ya que no toma cuenta el factor del error en el código.
      • Imprudente e inadvertida -> No se sabe que se esta dejando un error ya que no se posee los conocimientos
      • Prudente y deliberada -> Se tiene el 100% de consciencia que se esta dejando la deuda y se tiene la promesa que se va a pagar.
      • Prudente e inadvertida -> Es la mas comun, se obtiene cuando se tiene la idea que el desarrollo es el mas eficiente pero se llega a discusión que se podia realizar ciertas mejoras

      ¿Cómo pagar las deudas?

      • Refactorización -> Es el proceso el cual se pagan las deudas.
      • Refactorizando el código, esto es mejorar el código sin alterar su comportamiento para que sea mas entendible y tolerante a cambios.
      • Y es importante que el código tenga tests ( units o integration tests ) automáticos que validen el comportamiento del código.

      ¿Cuándo refactorizar?

      • Cuando hay código de baja calidad ( duplicación de código, funciones con mas de una acción)
      • Se detecta cualquier otro tipo de code smell ( código duplicado, métodos o clases demasiado grandes y complejos, falta de cohesión entre diferentes partes del código, uso excesivo de condicionales y bucles anidados, por ej.)
      • Se debe tener test de código para antes refactorizar.
      Wladimir Rocha

      Wladimir Rocha

      student•
      hace 3 años

      El curso está buenisimo y solo es segundo video, He caído en deuda técnica, por falta de conocimientos habitualmente

        Nayllen Rojas

        Nayllen Rojas

        student•
        hace 3 años

        Estoy igual y apenas iniciando el curso

      Sharon Gizela Arana Mendoza

      Sharon Gizela Arana Mendoza

      student•
      hace 3 años

      Tipos de deuda técnica:

      • Imprudente y deliberada
      • Imprudente e inadvertida
      • Prudente y deliberada
      • Prudente e inadvertida

      ¿Cómo pagar las deudas? Refactorizando el código ¿Cuándo refactorizar? Cuando hay código de baja calidad o se detecta code smell

        Jean Carlos Perez Vega

        Jean Carlos Perez Vega

        student•
        hace 3 años

        muy bueno !

      Sergio Brandon De Lucio Chavero

      Sergio Brandon De Lucio Chavero

      student•
      hace 3 años

      Vamos por ese Senior Developer!!!

      Ana Rotela Cabrera

      Ana Rotela Cabrera

      student•
      hace un año

      Que buen inicio del curso! Dejo mis apuntes

      Juan Ignacio Canales Meneses

      Juan Ignacio Canales Meneses

      student•
      hace 3 años

      un buen complemento del curso seria el libro clean code de Robert C. Martín

      Johann Segura Chacón

      Johann Segura Chacón

      student•
      hace 3 años

      No puedo creerlo, justo hoy estaba investigando al respecto, y salió este curso, es como si me leyeran la mente

      Alejandro Gomez Maldonado

      Alejandro Gomez Maldonado

      student•
      hace 3 años

      Me ha pasado que veo condigo de hace un año y puedo ver que se puede optimizar, pero en ese momento no tenia las mismas skills que ahora voy adquiriendo con el tiempo

      Bryan Estiven Silva Mercado

      Bryan Estiven Silva Mercado

      student•
      hace 9 meses

      Creo que todos hemos pasado por los 4 tipos de deuda técnica 😂

      Melisa del Valle Barrera

      Melisa del Valle Barrera

      student•
      hace 2 años

      Deuda técnica y refactorización de código

      “Nuestro código tiene que ser simple y directo, debería de leerse con la misma facilidad que un texto bien escrito” -Grady Booch

      Deuda Técnica

      La Deuda Técnica hace referencia a los costos de un esfuerzo que se va a tener que hacer adicionalmente, porque se ha elegido un desarrollo sencillo y rápido, en lugar de utilizar un mejor enfoque que quizás tomaría más tiempo.

      Es un esfuerzo extra que lo que va a hacer es como si se tuviera un crédito, ya que a futuro vamos a tener que pagar esa deuda, y esto lo que puede hacer es multiplicar el tiempo de desarrollo del proyecto inicial.

      A la larga hace que el código sea difícil de mantener. Existen 4 tipos de deuda técnica:

      1 - Imprudente y deliberada → El/ la desarrolladora actúa de forma consciente del factor de deuda que están dejando en el código.

      2 - Imprudente e inadvertida → Dejar deuda técnica sin saberlo por falta de conocimiento.

      3 - Prudente y deliberada → Se planea para obtener otro beneficio o seguir otra ruta y se tiene en cuenta que se tiene que pagar lo más pronto posible.

      4 - Prudente e inadvertida → Cuando tenemos conocimiento en el código pero se puede realizar mejor con menos deuda.

      Refactorizar → Es un proceso que tiene como objetivo mejorar el código de un proyecto sin alterar su comportamiento para que sea más entendible y tolerante a cambios.

      Se refactoriza principalmente en dos momentos, siempre que existan test automáticos del código:

      1 - Cuando el código sea de baja calidad(Código duplicado, cuando las funciones tienen más de una acción, etc.)

      2 - Al detectar un code smell (indicadores superficiales de posibles problemas en el sistema)

      Eugenio Condori

      Eugenio Condori

      student•
      hace 2 años

      La deuda técnica se paga mediante la refactorización del código, identificando y corrigiendo problemas como duplicación y la complejidad excesiva. Es crucial reconocer cuándo se incurre en deuda técnica y actuar para mantener un código limpio y mantenible, respaldado por pruebas automatizadas.

      José manuel Sanchez Juarez

      José manuel Sanchez Juarez

      student•
      hace 2 años

      Si son proyectos legacy que no tiene pruebas unitarias y test pruebas de integración como entraría la factorización, ya que tampoco cuenta con la documentación del respectivo software.

      Joan Alexander Valerio Rodríguez

      Joan Alexander Valerio Rodríguez

      student•
      hace 2 años

      Acabo de iniciar este curso. Excelente la explicación de Alex y muy claro como aplicar estos conceptos.

      María Mercedes Eizaga Oberto

      María Mercedes Eizaga Oberto

      student•
      hace 2 años

      Excelente esta clase

      Jovan Fernández

      Jovan Fernández

      student•
      hace 3 años

      Muy interesante el curso, son las cosas que uno debe aprender si o si cuando se desarrolla software; y creo que todos de alguna u otra forma hemos desarrollado con deudas técnicas de los 4 tipos.

      Reinaldo Mendoza

      Reinaldo Mendoza

      student•
      hace 3 años

      Los tests y los comments que vienen de la revision de los PR de los desarrolladores senior ensenan un montón

    Escuelas

    • Desarrollo Web
      • Fundamentos del Desarrollo Web Profesional
      • Diseño y Desarrollo Frontend
      • Desarrollo Frontend con JavaScript
      • Desarrollo Frontend con Vue.js
      • Desarrollo Frontend con Angular
      • Desarrollo Frontend con React.js
      • Desarrollo Backend con Node.js
      • Desarrollo Backend con Python
      • Desarrollo Backend con Java
      • Desarrollo Backend con PHP
      • Desarrollo Backend con Ruby
      • Bases de Datos para Web
      • Seguridad Web & API
      • Testing Automatizado y QA para Web
      • Arquitecturas Web Modernas y Escalabilidad
      • DevOps y Cloud para Desarrolladores Web
    • English Academy
      • Inglés Básico A1
      • Inglés Básico A2
      • Inglés Intermedio B1
      • Inglés Intermedio Alto B2
      • Inglés Avanzado C1
      • Inglés para Propósitos Específicos
      • Inglés de Negocios
    • Marketing Digital
      • Fundamentos de Marketing Digital
      • Marketing de Contenidos y Redacción Persuasiva
      • SEO y Posicionamiento Web
      • Social Media Marketing y Community Management
      • Publicidad Digital y Paid Media
      • Analítica Digital y Optimización (CRO)
      • Estrategia de Marketing y Growth
      • Marketing de Marca y Comunicación Estratégica
      • Marketing para E-commerce
      • Marketing B2B
      • Inteligencia Artificial Aplicada al Marketing
      • Automatización del Marketing
      • Marca Personal y Marketing Freelance
      • Ventas y Experiencia del Cliente
      • Creación de Contenido para Redes Sociales
    • Inteligencia Artificial y Data Science
      • Fundamentos de Data Science y AI
      • Análisis y Visualización de Datos
      • Machine Learning y Deep Learning
      • Data Engineer
      • Inteligencia Artificial para la Productividad
      • Desarrollo de Aplicaciones con IA
      • AI Software Engineer
    • Ciberseguridad
      • Fundamentos de Ciberseguridad
      • Hacking Ético y Pentesting (Red Team)
      • Análisis de Malware e Ingeniería Forense
      • Seguridad Defensiva y Cumplimiento (Blue Team)
      • Ciberseguridad Estratégica
    • Liderazgo y Habilidades Blandas
      • Fundamentos de Habilidades Profesionales
      • Liderazgo y Gestión de Equipos
      • Comunicación Avanzada y Oratoria
      • Negociación y Resolución de Conflictos
      • Inteligencia Emocional y Autogestión
      • Productividad y Herramientas Digitales
      • Gestión de Proyectos y Metodologías Ágiles
      • Desarrollo de Carrera y Marca Personal
      • Diversidad, Inclusión y Entorno Laboral Saludable
      • Filosofía y Estrategia para Líderes
    • Diseño de Producto y UX
      • Fundamentos de Diseño UX/UI
      • Investigación de Usuarios (UX Research)
      • Arquitectura de Información y Usabilidad
      • Diseño de Interfaces y Prototipado (UI Design)
      • Sistemas de Diseño y DesignOps
      • Redacción UX (UX Writing)
      • Creatividad e Innovación en Diseño
      • Diseño Accesible e Inclusivo
      • Diseño Asistido por Inteligencia Artificial
      • Gestión de Producto y Liderazgo en Diseño
      • Diseño de Interacciones Emergentes (VUI/VR)
      • Desarrollo Web para Diseñadores
      • Diseño y Prototipado No-Code
    • Contenido Audiovisual
      • Fundamentos de Producción Audiovisual
      • Producción de Video para Plataformas Digitales
      • Producción de Audio y Podcast
      • Fotografía y Diseño Gráfico para Contenido Digital
      • Motion Graphics y Animación
      • Contenido Interactivo y Realidad Aumentada
      • Estrategia, Marketing y Monetización de Contenidos
    • Desarrollo Móvil
      • Fundamentos de Desarrollo Móvil
      • Desarrollo Nativo Android con Kotlin
      • Desarrollo Nativo iOS con Swift
      • Desarrollo Multiplataforma con React Native
      • Desarrollo Multiplataforma con Flutter
      • Arquitectura y Patrones de Diseño Móvil
      • Integración de APIs y Persistencia Móvil
      • Testing y Despliegue en Móvil
      • Diseño UX/UI para Móviles
    • Diseño Gráfico y Arte Digital
      • Fundamentos del Diseño Gráfico y Digital
      • Diseño de Identidad Visual y Branding
      • Ilustración Digital y Arte Conceptual
      • Diseño Editorial y de Empaques
      • Motion Graphics y Animación 3D
      • Diseño Gráfico Asistido por Inteligencia Artificial
      • Creatividad e Innovación en Diseño
    • Programación
      • Fundamentos de Programación e Ingeniería de Software
      • Herramientas de IA para el trabajo
      • Matemáticas para Programación
      • Programación con Python
      • Programación con JavaScript
      • Programación con TypeScript
      • Programación Orientada a Objetos con Java
      • Desarrollo con C# y .NET
      • Programación con PHP
      • Programación con Go y Rust
      • Programación Móvil con Swift y Kotlin
      • Programación con C y C++
      • Administración Básica de Servidores Linux
    • Negocios
      • Fundamentos de Negocios y Emprendimiento
      • Estrategia y Crecimiento Empresarial
      • Finanzas Personales y Corporativas
      • Inversión en Mercados Financieros
      • Ventas, CRM y Experiencia del Cliente
      • Operaciones, Logística y E-commerce
      • Gestión de Proyectos y Metodologías Ágiles
      • Aspectos Legales y Cumplimiento
      • Habilidades Directivas y Crecimiento Profesional
      • Diversidad e Inclusión en el Entorno Laboral
      • Herramientas Digitales y Automatización para Negocios
    • Blockchain y Web3
      • Fundamentos de Blockchain y Web3
      • Desarrollo de Smart Contracts y dApps
      • Finanzas Descentralizadas (DeFi)
      • NFTs y Economía de Creadores
      • Seguridad Blockchain
      • Ecosistemas Blockchain Alternativos (No-EVM)
      • Producto, Marketing y Legal en Web3
    • Recursos Humanos
      • Fundamentos y Cultura Organizacional en RRHH
      • Atracción y Selección de Talento
      • Cultura y Employee Experience
      • Gestión y Desarrollo de Talento
      • Desarrollo y Evaluación de Liderazgo
      • Diversidad, Equidad e Inclusión
      • AI y Automatización en Recursos Humanos
      • Tecnología y Automatización en RRHH
    • Finanzas e Inversiones
      • Fundamentos de Finanzas Personales y Corporativas
      • Análisis y Valoración Financiera
      • Inversión y Mercados de Capitales
      • Finanzas Descentralizadas (DeFi) y Criptoactivos
      • Finanzas y Estrategia para Startups
      • Inteligencia Artificial Aplicada a Finanzas
      • Domina Excel
      • Financial Analyst
      • Conseguir trabajo en Finanzas e Inversiones
    • Startups
      • Fundamentos y Validación de Ideas
      • Estrategia de Negocio y Product-Market Fit
      • Desarrollo de Producto y Operaciones Lean
      • Finanzas, Legal y Fundraising
      • Marketing, Ventas y Growth para Startups
      • Cultura, Talento y Liderazgo
      • Finanzas y Operaciones en Ecommerce
      • Startups Web3 y Blockchain
      • Startups con Impacto Social
      • Expansión y Ecosistema Startup
    • Cloud Computing y DevOps
      • Fundamentos de Cloud y DevOps
      • Administración de Servidores Linux
      • Contenerización y Orquestación
      • Infraestructura como Código (IaC) y CI/CD
      • Amazon Web Services
      • Microsoft Azure
      • Serverless y Observabilidad
      • Certificaciones Cloud (Preparación)
      • Plataforma Cloud GCP

    Platzi y comunidad

    • Platzi Business
    • Live Classes
    • Lanzamientos
    • Executive Program
    • Trabaja con nosotros
    • Podcast

    Recursos

    • Manual de Marca

    Soporte

    • Preguntas Frecuentes
    • Contáctanos

    Legal

    • Términos y Condiciones
    • Privacidad
    • Tyc promociones
    Reconocimientos
    Reconocimientos
    Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
    Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
    Logo reconocimientoPrimera Startup EdTech · 2018
    Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
    Logo reconocimientoCEO Mejor Emprendedor del año · 2024
    De LATAM conpara el mundo
    YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads