Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

163
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda