Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

193
Views
Retorno anticipado del método padre E hijo

Tengo una clase base en ES6 como esta:

 class BasePlot { props = { 'data': [] } constructor() { // do things but don't setup data } draw(data){ if (data && data.length ) this.props.data = data; // Q: how to exit here if height and width are not yet available? this.setScale() this.setAxis() } setDimensions(height, width) { this.props.height = height; this.props.width = width; } }

La clase nunca se instanciará directamente, sino que se usará solo para la herencia.
Además del constructor, todos los demás métodos pueden llamarse en un orden impredecible, es por eso que en el método de draw no quiero continuar si la height y el width aún no están definidos para la instancia.

Simplemente podría agregar una condición if y salir, pero eso no es lo que tenía en mente.

En una clase secundaria, llamo al draw principal así:

 class RectPlot extends BasePlot{ draw(data){ super.draw(data); // DON'T EXECUTE if height and width are not set // rest of the code } }

En este caso, cuando llamo al draw secundario, primero llamo al método principal y, en caso de que la height y el width aún no estén configurados, me gustaría salir (regresar) del método principal pero TAMBIÉN del secundario.

Lo que quiero decir es algo como esto:

 // Parent draw(data){ if (data && data.length ) this.props.data = data; if(this.props.height && this.props.width) this.setScale() this.setAxis() return true } else return false } } // Child draw(data){ if(super.draw(data)){ // proceed w rest of the code } else return false }

Esto es exactamente lo que me gustaría hacer, excepto que no quiero verificar con un if en todas las subclases si el draw principal se completó con éxito.

P: ¿Hay alguna manera de "salir antes" de un método padre Y un método hijo además de la repetición antes mencionada del bloque if - else en todas las clases de niños?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No puede regresar de un método de llamada desde dentro de un método llamado. Sin embargo, podrías evitar el problema por completo...

Un diseño alternativo podría ser crear otro método, digamos drawCanvas por ejemplo, de la siguiente manera...

 class BasePlot { props = { data: [], }; draw(data) { if (data && data.length) this.props.data = data; if (this.props.height && this.props.width) this.drawCanvas(data); } drawCanvas(data) { this.setScale(); this.setAxis(); } } class RectPlot extends BasePlot { drawCanvas(data) { super.drawCanvas(data); // other stuff } }

Luego anularía drawCanvas en lugar de draw , sabiendo que solo se llama drawCanvas si existen width y height .

Estoy de acuerdo en que verificar el valor devuelto de super.draw(data) , como en su ejemplo, no es lo ideal. Sería fácil olvidarse de esta comprobación, lo que daría lugar a posibles errores. Tampoco es obvio para el lector de la implementación de la clase secundaria por qué se requiere esta verificación sin mirar la implementación de la clase base.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!