Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

155
Vistas
Clases: métodos no relacionados intrínsecamente con un objeto frente a funciones

Soy nuevo en JavaScript, actualmente estoy aprendiendo clases.

Hice una clase simple que crea un cuadrado con un tamaño y color aleatorio:

 class Square { constructor(maxSize = 150, minSize = 50) { this.maxSize = maxSize; this.minSize = minSize; this.size = this.setRandomSize(); this.color = this.randomColor(); } createShape() { const square = document.createElement('div'); square.classList.add('square'); document.body.appendChild(square); square.style.cssText = ` width: ${this.size}px; height: ${this.size}px; background-color: ${this.color}; `; } randomNumber(max, min = 0) { return Math.floor(Math.random() * (max - min) + min); } setRandomSize() { return this.randomNumber(this.maxSize, this.minSize); } randomColor() { return `hsla(${this.randomNumber(360)}, 50%, 40%, .7)`; } } new Square().createShape();

Como puede ver en el código anterior, tengo 2 métodos randomNumber y setRandomColor que no usan ninguna instancia o propiedad de método.

Me pregunto cuál es el enfoque o los beneficios recomendados (aparte de la portabilidad) entre tener estas funciones dentro o fuera de la clase (como se muestra a continuación). En otras palabras, ¿se recomienda mantener dentro de la clase los métodos que están intrínsecamente relacionados solo con el objeto (bloque de código 2) o los métodos que permiten que la clase funcione como "independiente" (bloque de código 1)?

 class Square { constructor(maxSize = 150, minSize = 50) { this.maxSize = maxSize; this.minSize = minSize; this.size = this.setRandomSize(); this.color = randomColor(); } createShape() { const square = document.createElement('div'); square.classList.add('square'); document.body.appendChild(square); square.style.cssText = ` width: ${this.size}px; height: ${this.size}px; background-color: ${this.color}; `; } setRandomSize() { return randomNumber(this.maxSize, this.minSize); } } function randomNumber(max, min = 0) { return Math.floor(Math.random() * (max - min) + min); } function randomColor() { return `hsla(${randomNumber(360)}, 50%, 40%, .7)`; } new Square().createShape();
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Tuve una confusión similar cuando comencé a aprender a programar. Dado que es de clase, me gustaría resaltar SÓLIDO aquí.

Responsable único: una clase debe hacer una cosa. ¿El trabajo de tu clase es crear un número aleatorio? Creaste la clase porque querías un cuadrado, no un generador de tamaño aleatorio.

Además, si coloca las funciones fuera de la clase y las usa allí, su clase se acoplará con esas funciones. ¿Qué hará si necesita usar color rgb en lugar de hsla? ¿Otra clase? Entonces, menos acoplamiento aumentará la calidad de su clase.

Entonces, ¿cómo escribiría la clase?

 class Square { constructor(size, color){ this.size = size; this.color = color; this.square = document.createElement('div'); this.square.classList.add('square'); document.body.appendChild(this.square); this.square.style.cssText = ` width: ${this.size}px; height: ${this.size}px; background-color: ${this.color}; `; } } function randomNumber(max, min = 0) { return Math.floor(Math.random() * (max - min) + min); } function randomColor() { return `hsla(${randomNumber(360)}, 50%, 40%, .7)`; } const size = randomNumber(100, 50) const color = randomColor() const mySquare = new Square(size, color)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda