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
  • 2
    Reglas del diseño simple

    Reglas del diseño simple

    02:49
  • 3
    Qué es Clean Code

    Qué es Clean Code

    02:18
Nombre y uso de las variables
  • 4
    Uso correcto de var, let y const

    Uso correcto de var, let y const

    12:13
  • 5
    Reglas para la nomenclatura

    Reglas para la nomenclatura

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

    Cómo nombrar según el tipo de dato

    11:50
  • 7

    Nombres de Variables y Funciones Correctos en JavaScript

    00:28
Ámbito de las variables
  • 8
    Ámbito global

    Ámbito global

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

    Ámbito local o de función

    03:40
  • 10
    Ámbito de bloque

    Ámbito de bloque

    05:39
  • 11
    Ámbito estático

    Ámbito estático

    04:17
  • 12
    Hoisting

    Hoisting

    07:42
Funciones
  • 13
    Declaración y expresión de funciones

    Declaración y expresión de funciones

    03:52
  • 14
    Parámetros y argumentos

    Parámetros y argumentos

    16:04
  • 15
    Funciones de flecha y el this

    Funciones de flecha y el this

    10:01
Clases
  • 16
    POO con ES6 (constructores, métodos y herencia)

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

    07:40
  • 17
    Herencia en JavaScript

    Herencia en JavaScript

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

    Tamaño reducido (responsabilidad única)

    06:36
  • 19
    Organización

    Organización

    03:23
Optimizaciones
  • 20
    Cuándo usar comentarios

    Cuándo usar comentarios

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

    Formato coherente (codear en equipos)

    03:37
  • 22
    Principio DRY

    Principio DRY

    06:02
  • 23

    Tipos de Algoritmos y Complejidad Big O en JavaScript

    03:09
Cierre
  • 24
    Sigue aprendiendo JavaScript

    Sigue aprendiendo JavaScript

    00:55
    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 2 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 2 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 10 meses

      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 2 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 4 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 10 meses

    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