CursosEmpresasBlogLiveConfPrecios

Organización

Clase 19 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
    LEONARD CUENCA

    LEONARD CUENCA

    student•
    hace 3 años

    Clase 19: Organización

    • Variables → Son conocidas como propiedades en el mundo POO → son todos esos elementos donde vamos a guardar información.
    • Constantes → Son todos esos elementos que no van a cambiar su valor, también son conocidas como propiedades
    • Variables estáticas → Son elementos que pueden o no estar en la clase.
    • Métodos → Tus métodos son tus funciones, solo que en POO se le reconoce así, no olvides que dentro de una clase los métodos deben ser ordenados de mayor importancia a menor importancia. Lo ordenas de la siguiente manera, creas una clase y esta clase tiene un método funcional y los otros métodos que se crean es para apoyar el primer método.
    • Funciones estáticas → se le dicen estáticas, ya que estas no deben ser heredadas a otra clase, solo se usan en la clase principal.
    • Getters y setters → Estas permiten alterar y obtener alguna propiedad de tu clase. Recuerda esto se usa para no poder acceder directamente a la propiedad JS si lo permite, pero NO es buena práctica.
      Markin Piero Pulache Guarniz

      Markin Piero Pulache Guarniz

      student•
      hace 2 años

      buen aporte

    Elcira Ibarra

    Elcira Ibarra

    student•
    hace 3 años

    Organización de clases

    • Variables
    • Constantes
    • Variables estáticas
    • Métodos
    • Funciones estáticas
    • Getters y setters
    Irving Juárez

    Irving Juárez

    student•
    hace 2 años

    Porque tener setter y getters

    Los setters y getters son funciones para asignar y devolver un valor. Por ejemplo ten en cuenta los siguientes ejemplos

    // SIN gettes y setters ❌ class Person { constructor(name) { this.name = name } } const irving = new Person("irving") irving.name = "Irvong" // asignando propiedad console.log(irving.name) // accediendo // CON getters y setters ✔️ class Person { constructor(name) { this._name = name } get name(){ return this._name } set name(newValue){ this._name = newValue } } const irving = new Person("irving") irving.name = "Irvong" // asignando propiedad console.log(irving.name) // accediendo

    Estas dos classes hacen los mismo, asignan y retornan propiedad. Suena un poco como a lo mismo, no? Porque usar setters y getters entonces? . Ahí esta el asunto, con los getters y setters nosotros podemos crear ciertas validaciones. Por ejemplo, para asignar el valor a irving.name = 4, nosotros podemos validar que el nuevo valor sea de tipo string. Con los setters se puede lograr, mientras que sin ellos, no es posible. . Lo mismo aplica para los getters. Lo que se esta haciendo es un proxy, o una capa de validación para ver si el dato que se quiere entregar o asignar puede ejecutar esa acción de acuerdo a diversas validaciones o contextos

    Arturo Malgor

    Arturo Malgor

    student•
    hace 3 años

    Las variables estáticas son variables en programación que mantienen su valor durante toda la vida útil del programa y se pueden compartir entre diferentes partes del código, como por ejemplo entre diferentes funciones o instancias de una clase.

    Arturo Malgor

    Arturo Malgor

    student•
    hace 3 años

    Los getters y setters son métodos que te permiten acceder y modificar las propiedades de un objeto de manera controlada. Los getters te permiten obtener el valor de una propiedad, mientras que los setters te permiten modificar su valor.

    Para definir un getter o un setter, se utiliza la sintaxis de métodos de acceso, que es muy similar a la de los métodos normales, pero con la palabra clave "get" o "set" antes del nombre del método.

    Los getters y setters son útiles para agregar validaciones y restricciones antes de obtener o modificar una propiedad, lo que te permite mantener un mayor control sobre los datos que manejas.

    Carlos Rivas

    Carlos Rivas

    student•
    hace un año
    • Constantes → Las constantes (estáticas y finales) deben colocarse al inicio de la clase, antes de cualquier otra variable o método. Esto hace que sean fácilmente localizables, ya que suelen representar configuraciones o valores inmutables importantes para la clase.
    • Variables de instancia → Las variables de instancia (no estáticas) deberían venir después de las constantes. Ayuda a saber cuáles son los datos que la instancia de esta clase manejará.
    • Variables estáticas → Las variables estáticas (no constantes) pueden ir después de las variables de instancia. Colocarlas aquí aclara que pertenecen a la clase en lugar de a las instancias individuales.
    • Constructor → El constructor debe ir después de las variables, ya que permite inicializar el estado de la clase y es uno de los elementos más relevantes para entender cómo se configura una instancia.
    • Métodos estáticos → Los métodos estáticos deben ir después del constructor. Esto da claridad sobre las utilidades relacionadas con la clase que no requieren una instancia específica.
    • Métodos públicos → Los métodos públicos de la clase son las funcionalidades principales que expone la clase. Al colocarlos después del constructor y métodos estáticos, el lector puede ver directamente las operaciones que puede realizar una instancia de la clase.
    • Getters y setters → Aunque los getters y setters son métodos públicos, suelen colocarse juntos después de los demás métodos públicos para no interrumpir la lectura de las operaciones principales de la clase.
    • Métodos privados → Finalmente, los métodos privados deben ir al final de la clase, ya que son detalles de implementación interna y no están destinados a ser utilizados fuera de la clase.
    public class MiClase { // Constantes private static final int CONSTANTE = 100; // Variables de instancia private int variableInstancia; // Variables estáticas private static int contador; // Constructor public MiClase(int valor) { this.variableInstancia = valor; } // Métodos estáticos public static void metodoEstatico() { // lógica } // Métodos públicos public void metodoPublico() { // lógica } // Getters y setters public int getVariableInstancia() { return variableInstancia; } public void setVariableInstancia(int variableInstancia) { this.variableInstancia = variableInstancia; } // Métodos privados private void metodoPrivado() { // lógica interna } } ```public class MiClase {   // Constantes   private static final int CONSTANTE = 100;   // Variables de instancia   private int variableInstancia;   // Variables estáticas   private static int contador;   // Constructor   public MiClase(int valor) {   this.variableInstancia = valor;   }   // Métodos estáticos   public static void metodoEstatico() {   // lógica   }   // Métodos públicos   public void metodoPublico() {   // lógica   }   // Getters y setters   public int getVariableInstancia() {   return variableInstancia;   }   public void setVariableInstancia(int variableInstancia) {   this.variableInstancia = variableInstancia;   }   // Métodos privados   private void metodoPrivado() {   // lógica interna   } }
    Sandra Rosa Arroyo Paredes

    Sandra Rosa Arroyo Paredes

    student•
    hace un año

    Un ejemplo

    class Producto { // Constantes static const IVA = 0.21; static const DESCUENTO_MAXIMO = 0.5; // Variables estáticas static contadorProductos = 0; // Variables de instancia #id; #nombre; #precio; #descuento; constructor(nombre, precio) { this.#id = ++Producto.contadorProductos; this.#nombre = nombre; this.#precio = precio; this.#descuento = 0; } // Getters get id() { return this.#id; } get nombre() { return this.#nombre; } get precio() { return this.#precio; } get descuento() { return this.#descuento; } // Setters set nombre(nuevoNombre) { if (typeof nuevoNombre === 'string' && nuevoNombre.trim() !== '') { this.#nombre = nuevoNombre.trim(); } } set descuento(nuevoDescuento) { if (nuevoDescuento >= 0 && nuevoDescuento <= Producto.DESCUENTO_MAXIMO) { this.#descuento = nuevoDescuento; } } // Métodos calcularPrecioFinal() { const precioConDescuento = this.#precio * (1 - this.#descuento); return precioConDescuento * (1 + Producto.IVA); } // Funciones estáticas static compararPrecios(producto1, producto2) { return producto1.calcularPrecioFinal() - producto2.calcularPrecioFinal(); } } // Uso de la clase const producto1 = new Producto("Laptop", 1000); producto1.descuento = 0.1; console.log(producto1.calcularPrecioFinal()); const producto2 = new Producto("Smartphone", 500); console.log(Producto.compararPrecios(producto1, producto2));
      Sandra Rosa Arroyo Paredes

      Sandra Rosa Arroyo Paredes

      student•
      hace un año

      Con respecto a variables/métodos de instancia/estáticas, sus diferencias clave son:

      1. Contexto:
        • Variables/Métodos de Instancia: Operan en el contexto de un objeto específico.
        • Variables/Funciones Estáticas: Operan en el contexto de la clase en general.
      2. Acceso:
        • De Instancia: Se acceden a través de una instancia de la clase (objeto).
        • Estáticos: Se acceden directamente a través de la clase.
      3. Uso de Memoria:
        • De Instancia: Cada objeto tiene su propia copia.
        • Estáticos: Solo existe una copia compartida por todos los objetos.
      4. Funcionalidad:
        • De Instancia: Para comportamientos específicos de cada objeto.
        • Estáticos: Para funcionalidades que no requieren un estado de instancia.

      En resumen, los miembros de instancia (variables y métodos) están vinculados a objetos específicos y manejan el estado y comportamiento individual, mientras que los miembros estáticos (variables y funciones) pertenecen a la clase en su conjunto y manejan aspectos compartidos o globales de la clase.

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