Por lo general, las clases en JavaScript se presentan así:
class Rectangle { constructor(height, width) { this.height = height; this.width = width; } get area() { return this.calcArea(); } calcArea() { return this.height * this.width; } }
Como fanático de la programación funcional y como alguien que quiere hacer que el código sea escalable, me siento tentado a tener algo así para toda la aplicación:
calcArea({height, width}) { return height * width; } class Rectangle { constructor(height, width) { this.height = height; this.width = width; } get area() { return calcArea(this); } }
Básicamente, transforma las clases en estructuras y abstrae todos los métodos con funciones relacionadas. De esta manera, puedo exportar fácilmente la función calcArea
. ¿Tiene esto sentido? Me gustaría escuchar algunas ideas al respecto. ¿Hay buenos artículos sobre estos enfoques de arquitectura? Gracias
FP facilita el código compartido porque separa claramente el estado de su lógica de transición . Sugeriría pensar si realmente necesita agregar todo este código de soporte, o si simplemente podría trabajar con state
y las transitions
.
¿No estaría igual de bien lo siguiente? ¿Y posiblemente más claro?
const rect = { width: 100, height: 500 }; const toRectArea = (rect) => rect.width * rect.height; const toTriagleArea = (triangle) => toRectArea(trianle) / 2;