CursosEmpresasBlogLiveConfPrecios

Qué es Clean Code

Clase 3 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

    07:03 min
  • 2
    Reglas del diseño simple

    Reglas del diseño simple

    02:49 min
  • 3
    Qué es Clean Code

    Qué es Clean Code

    Viendo ahora

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

      Cuando programé mis primeros proyectos solo Dios y yo sabíamos qué estaba haciendo Ahora solo Dios sabe.

        Reinaldo Mendoza

        Reinaldo Mendoza

        student•
        hace 3 años

        x2, luego escribiendo mejor código ya me permito entender que quise hacer, pero al inicio de mi carrera era bastante común que me pasara eso

        Billy  Torres

        Billy Torres

        student•
        hace 3 años

        jajajja

      Sharon Gizela Arana Mendoza

      Sharon Gizela Arana Mendoza

      student•
      hace 3 años

      Me paso que trabajé con una chica que copiaba y pegaba una y otra vez los procesos para no hacer funciones y para acabarla, todo se llamaba 'character, characteer, chaaracter, characters' :c

        Reinaldo Mendoza

        Reinaldo Mendoza

        student•
        hace 3 años

        Oh por Dios, si es hasta mas difícil hacer eso, ja

        Humberto Guardado

        Humberto Guardado

        student•
        hace 2 años
        • yo estuve allí igualmente, solo que la chica de al lado usaba una microfalda, y no entendía para que servía el botón que decía "SAVE".

        • Ella tuvo que tomar un curso de inglés antes de meterse a nuevos cursos del tema.

      LEONARD CUENCA

      LEONARD CUENCA

      student•
      hace 3 años

      Por mi experiencia y duro inicio recomiendo los siguientes tips

      • Antes de programar tener una hoja en blanco y escribir o garabatear lo que vas a hacer esto ayuda mucho organizar tus ideas

      • Para mí programar es como jugar o armar bloque de LEGO, esto ayuda a categorizar lo que vas a hacer y ayuda a generar un código limpio por los principios del LEGO cualquier persona puede armar un bloque

      • Tener buenas bases, NO hablo de ser experto, o ser un supergenio, Hablo de que sepas que piezas de LEGO puedes usar y entender tus habilidades y limitaciones

      • Por favor usar las reglas básicas de doc documents, tú sabes comentar cada variable que no es obvia, y por favor cada función anexarle una descripción

      • Mantener un código identado ayuda mucho.

      • Si es algo complejo de hacer es difícil de explicar así que simplifica

      Irving Juárez

      Irving Juárez

      student•
      hace 3 años

      Robert C. Martin es un gran autor, yo lo recomiendo bastante, de hecho el fue el que acuño el termino SOLID (el no invento estos principios, solo dio el nombre), para las reglas "universales" que se tienen que seguir al escribir una buena arquitectura de sofware. Sin embargo, la mayoria de sus libros estan enfocados en POO. Por esa razón, se dice que en React no se pueden ocupar los principios SOLID. . En el caso de JS, al ser un lenguage de programación que esta enfocado en funciones y que tiene "first-class functions", muchas veces las autoproclamadas "reglas universales" de programación como SOLID, no aplican. Ya que JS nos permite ejercer otros patrones de diseño que en la mayoria de los lenguages no se pueden hacer. Esto es, debido al feature de "first-class functions" que nos proporciona JS

      Joan Manuel Theran Burgos

      Joan Manuel Theran Burgos

      student•
      hace 3 años

      la frese celebre: antes Dios y yo sabiamos que decia el codigo, ahora solo Dios lo sabe

        Humberto Guardado

        Humberto Guardado

        student•
        hace 2 años

        print("totalmente de acuerdo")

      Jose Luis Tovar Fernández

      Jose Luis Tovar Fernández

      student•
      hace 3 años

      Cada vez que chequeo un proyecto en el que he trabajado, digo lo mismo... Quien escribió esto. Al menos me doy cuenta de todo lo que he aprendido

      Kevin Giovanni Cano Blanco

      Kevin Giovanni Cano Blanco

      student•
      hace 3 años

      Hace unos años trabajaba con de una forma que funcionaba pero si regresaba al código luego de un par de meses, no lo entendía, es como la frase que dice: "Cuando hice este código solo dios y yo sabíamos que hacía, ahora solo dios sabe" Trabajaba con mucho código espagueti y ni hablar de las malas practicas.

      Jose Gabriel Argüello

      Jose Gabriel Argüello

      student•
      hace 3 años

      Que es clean Code?

      Es un termino popularizado por Robert C martin en su libro CleanCode: A handbook of Agile Software Craftsmanship en el 2008. El código limpio es aquel que se ha escrito con la intención que otra persona lo entienda

      Jasubi Lehem Piñeyro Legaspi

      Jasubi Lehem Piñeyro Legaspi

      student•
      hace 9 meses

      Actualmente, debido a mi falta de experiencia y no teniendo conocimiento de las buenas prácticas, mi equipo tuvo que refactorizar los Test E2E que realice justo cuando nos quedaba 1 semana para integrar a producción. 😅

      Luis Rodolfo Reyes

      Luis Rodolfo Reyes

      student•
      hace 2 años

      cuando empecé, a veces escribía variables como :

      var jjjj = 0, no sé si a alguien más le haya pasado

        Eric Daniel Cavanzo

        Eric Daniel Cavanzo

        student•
        hace un año

        SJSJSJ cuando yo practico (ademas de que hasta ahora empiezo) no se me ocurren nombres, entonces si son codigos cortos directamente pongo ("si", "no", "a", "b") Lo cual si me doy cuenta que esta re mal hecho SJSJ pero no se me ocurrían nombres

      Oscar Andrey Martinez Calderon

      Oscar Andrey Martinez Calderon

      student•
      hace 3 años

      Me resulta la mejor manera de medir la calidad de nuestro código:

      ff68a5a9d71c3eea9ae4f9e8fed469d1.jpg

        Emerson Cedeño

        Emerson Cedeño

        student•
        hace un año

        WTFs/minute ... buena unidad de medida! 🤣

      Ikal Esteban Fernández Galván

      Ikal Esteban Fernández Galván

      student•
      hace 2 años

      ¡Recuerda!

      Es bueno poner comentarios para describir algunas cosas, ¡pero no es bueno usarlos de más! Mejor ponle nombres descriptivos a tus variables o funciones.

      Luis Eduardo Payano Villar

      Luis Eduardo Payano Villar

      student•
      hace un año

      Algunos de los principios clave del Clean Code son:

      1. Legibilidad

      • El código debe ser fácil de leer y entender para otros desarrolladores. Esto implica usar nombres descriptivos para variables, métodos y clases, y evitar abreviaturas confusas.
      • La legibilidad se mejora utilizando una correcta indentación y espaciado, así como comentarios solo donde sea realmente necesario, ya que el código debe ser lo suficientemente claro por sí mismo.

      2. Funciones Pequeñas y Concisas

      • Las funciones deben ser pequeñas y realizar una única tarea bien definida. Es preferible dividir tareas complejas en varias funciones más simples y específicas.
      • Evitar funciones largas y con múltiples responsabilidades, ya que esto facilita su testeo y reusabilidad.

      3. Nombres Significativos

      • Los nombres de las variables, métodos y clases deben comunicar claramente su propósito. Se debe evitar nombres genéricos como temp o data, a menos que sean apropiados en el contexto.
      • Un nombre claro y preciso facilita el entendimiento del código sin necesidad de comentarios adicionales.

      4. Evitar la Duplicación de Código

      • La duplicación de código es un síntoma de mala estructura. Se debe extraer funcionalidad repetida en métodos comunes para que sea más fácil de modificar y mantener.

      5. Código Auto-Documentado

      • Un buen código debe ser auto-explicativo. En lugar de añadir comentarios extensivos para explicar el código, se debe escribir el código de tal manera que no necesite explicaciones adicionales.

      6. Uso de Excepciones en Lugar de Códigos de Error

      • En vez de usar códigos de error que requieren lógica adicional para manejarlos, se debe usar excepciones, que permiten separar la lógica de manejo de errores de la lógica principal del programa.

      7. Desacoplamiento

      • El código debe estar diseñado de manera que los módulos, clases o funciones no dependan demasiado unos de otros. Esto permite que los cambios en una parte del sistema no afecten demasiado a otras partes.
      • Se puede utilizar la inyección de dependencias para reducir el acoplamiento entre componentes.

      8. Principio SOLID

      • Clean Code suele estar asociado con los principios SOLID:
        • S: Single Responsibility Principle (Principio de Responsabilidad Única)
        • O: Open/Closed Principle (Principio Abierto/Cerrado)
        • L: Liskov Substitution Principle (Principio de Sustitución de Liskov)
        • I: Interface Segregation Principle (Principio de Segregación de Interfaces)
        • D: Dependency Inversion Principle (Principio de Inversión de Dependencias)

      9. Pruebas Unitarias

      • El código limpio está bien probado. Las pruebas unitarias garantizan que cada parte del código funcione correctamente de manera aislada, permitiendo refactorizaciones seguras.

      10. Mantener el Código Simple (KISS)

      • El principio de KISS ("Keep It Simple, Stupid") indica que el código debe ser lo más sencillo posible. La complejidad innecesaria introduce errores y dificulta el mantenimiento del software.

      En resumen, el Clean Code se enfoca en la simplicidad, claridad y en la creación de código que sea sostenible y fácil de mejorar.

      Maria Alejandra Luna Tito

      Maria Alejandra Luna Tito

      student•
      hace 5 meses

      si me suele pasar que cuando ya voy a terminar la funcionalidad veo cosas que podría mejorar o cosas q no entiendo o se ven algo mal. O cuando lo vuelvo a ver digo pucha como hice esto asi.

      Melissa Maya López

      Melissa Maya López

      student•
      hace un año

      Clean code: Es un termino popularizado, para determinar la calidad del código, es decir, es aquel que fue escrito con la intención de que otra persona lo entienda.

      Melisa del Valle Barrera

      Melisa del Valle Barrera

      student•
      hace 2 años

      El chat gtp: aquí tienes un resumen de los puntos más importantes del libro "Clean Code: A Handbook of Agile Software Craftsmanship" de Robert C. Martin (también conocido como "Uncle Bob"):

      1. Código limpio: El código debe ser simple y directo, fácil de leer y comprender. Debe ser como una buena literatura, donde cada línea de código cuenta una historia.
      2. Nombres significativos: Los nombres de variables, funciones y clases deben ser claros y descriptivos. Deben reflejar su propósito y uso.
      3. Funciones pequeñas: Las funciones deben ser cortas y hacer solo una cosa. Idealmente, una función no debe tener más de 20 líneas de código y debe tener un único nivel de abstracción.
      4. Uso de comentarios: Los comentarios deben ser evitados si es posible. En lugar de comentarios, se debe escribir código autoexplicativo. Los comentarios deben ser utilizados solo para explicar por qué se tomó una decisión particular.
      5. Formateo consistente: El código debe tener un formato consistente que facilite su lectura. Esto incluye el uso adecuado de espacios, sangrías y saltos de línea.
      6. Manejo de errores: El manejo de errores debe ser claro y no debe interrumpir el flujo del código principal. Se deben utilizar excepciones en lugar de códigos de error.
      7. Pruebas unitarias: Escribir pruebas unitarias es esencial para mantener el código limpio. Las pruebas aseguran que el código funciona como se espera y ayudan a prevenir futuros errores.
      8. Estructuras de datos y objetos: Se deben utilizar estructuras de datos y objetos adecuados. Los datos y las operaciones sobre esos datos deben estar encapsulados en clases.
      9. Evitar duplicación: El código duplicado debe ser eliminado. La duplicación hace que el mantenimiento sea más difícil y propenso a errores.
      10. Refactorización: El código debe ser continuamente refactorizado para mejorar su diseño y limpieza. La refactorización es una parte esencial del desarrollo ágil.
      11. Simplicidad: La simplicidad es clave. Se debe evitar la sobreingeniería y mantener el código tan simple como sea posible.
      12. Principios de diseño SOLID: Seguir los principios SOLID para un diseño de código robusto y mantenible:
        • S: Single Responsibility Principle (Principio de Responsabilidad Única)
        • O: Open/Closed Principle (Principio de Abierto/Cerrado)
        • L: Liskov Substitution Principle (Principio de Sustitución de Liskov)
        • I: Interface Segregation Principle (Principio de Segregación de Interfaces)
        • D: Dependency Inversion Principle (Principio de Inversión de Dependencias)

      Estos puntos resumen la filosofía y las prácticas recomendadas por Robert C. Martin para escribir código limpio y mantenible. Aplicar estos principios puede llevar a un código de alta calidad y fácil de mantener a lo largo del tiempo.

      Aramis Garcia Guerrero

      Aramis Garcia Guerrero

      student•
      hace 2 años

      Nos pasa a todos, a través del tiempo nos vamos dando cuenta todo lo que hemos aprendido, por ejemplo yo implementaba una funcionalidad en 100 líneas, cuando se podía hacer en 30 :/

      Eugenio Condori

      Eugenio Condori

      student•
      hace 2 años

      “El código limpio es aquel que se ha escrito con la intención de que otra persona lo entienda”

      José manuel Sanchez Juarez

      José manuel Sanchez Juarez

      student•
      hace 2 años

      Yo jaja trabajando en un proyecto legacy pense que seguía el mismo concepto de codificación anterior toca dar mantenimiento no me acuerdo ni como funciona para rematar no tiene test

      Jose Ever Muñoz Muñoz

      Jose Ever Muñoz Muñoz

      student•
      hace 2 años

    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