longitud kichink keywords etiqueta descripcion mvp

mvp - kichink - meta title y meta descripcion



En MVP donde escribir validaciones (3)

En el patrón Model-View-Presenter, ¿dónde debemos escribir las validaciones de la entrada del usuario?


Las reglas / validaciones específicas del dominio deben estar en el Modelo. Puede tener un model.validate () para hacerle saber si las reglas no se han violado. Mire las clases del modelo Rails (ActiveRecord) para una buena implementación de este concepto.

La Vista debería dificultar al usuario ingresar entradas no válidas. Por lo tanto, la clase de errores de entrada ''ingresando una cadena para un valor numérico'' debe ser cortada antes de llegar al presentador. Puede haber alguna duplicación de validaciones entre el modelo y la vista. Por ejemplo, AttributeX debe oscilar entre 1-100. Esto se debe validar en el modelo ... al mismo tiempo, es posible que desee colocar una ruleta en la interfaz de usuario con el rango minValue y maxValue establecido en 1-100.


Por lo general, mantengo mi vista completamente limpia, sin lógica allí. Pero no hago mucho desarrollo web. En situaciones Ajax-ish es posible que desee tener la validación del lado del cliente que tiene que ir en la vista.

La validación de la lógica de negocios va en el modelo. Con la validación de lógica de negocios me refiero a cosas como verificar el tamaño mínimo de pedido, etc.

La validación de entrada va en el presentador. Esto puede ser algo como comprobar si un campo numérico no contiene caracteres no numéricos. Pero dependiendo de su situación, esto también puede significar verificar si existen archivos, etc.

En casos más complejos en los que la validación debe ser reutilizable en diferentes lugares, generalmente los separé en un motor de validación que se puede llamar en diferentes lugares. Esto resuelve algunos problemas con la duplicación del código de validación que se utiliza en la capa de presentación, así como en la capa de persistencia, por ejemplo.


Presentador....

La vista debería tener "widgets" que impiden la entrada no válida siempre que sea posible.