Gran pregunta; tanto en el código front-end como en el back-end, veo controladores que han sobrepasado sus límites: llamémoslo el anti-patrón “controlador hinchado”, y tenga en cuenta que está fácilmente en la lista de los 10 más comunes. antipatrones.
Nada señala un equipo de ingeniería junior más rápido que un controlador LOC de más de 2000.
Permítame presentarle la noción de responsabilidad única: cada módulo / clase en su sistema debe tener una responsabilidad.
- ¿Cuál es el nombre de usuario y la contraseña de DVWA web pentesting lab?
- ¿Debo construir una aplicación web con herramientas que ya conozco o aprender nuevas?
- ¿Qué opinas sobre la página de inicio de Toolyo? ¿Cómo puede ser mejorado?
- ¿Cuál es la mejor pila de tecnología para una aplicación web en el dominio de finanzas?
- ¿Cuáles son las implicaciones de alojar nuestra aplicación web en un subdominio?
Entonces, ¿cuál es la responsabilidad de un controlador? En el front-end, es hacer que el modelo esté disponible para la vista y actuar como un proxy de la vista al modelo. (En el back-end, lo llamo un “http-proxy”: su única responsabilidad es recoger información de la solicitud http, enrutarla al controlador apropiado y enviar la respuesta de vuelta por el cable).
Como puede ver, en realidad se trata de múltiples responsabilidades, por lo que el patrón MVC no es realmente particularmente bueno. Dicho esto, puede mantener las cosas limpias manteniendo la superficie de responsabilidad de sus controladores lo más pequeña y enfocada posible:
- Los modelos deben traerse a través de servicios, no código en el controlador
- Las acciones deben ser enrutadas a los servicios por el controlador, no implementadas en el propio controlador
- Siempre tenga en cuenta la guía de que el controlador simplemente está allí para mediar entre el modelo y la vista. Cualquier lógica real, como la mutación del modelo a través de acciones o la mutación del modelo con fines de UI, pertenece a otro lugar, como en los servicios y modelos de vista.
- Y, por supuesto, siempre tenga en cuenta la capacidad de prueba de sus controladores. Si los mantiene simples, serán comprobables. Cuanto más agregue a sus controladores, más difícil será probarlos.