De alguna manera debo haber pasado por alto el principio de OOP de "dígame, no pregunte" todos estos años porque me acabo de enterar hace un par de días por primera vez.¿Se aplica "indicar, no preguntar" a la validación de entrada del usuario?
Pero el contexto era una discusión sobre el código de validación que se había movido de una página de formulario web ASP.NET a un objeto de datos/negocio, y no había un método "Validate()", solo un método de guardado sí mismo hizo la validación y (supuestamente) planteó una excepción. Le pregunté por qué esto fue diseñado de esta manera y me dirigieron al principio de "decir, no preguntar" de OOP, del que nunca había oído hablar, entonces miramos juntos en Google y me educaron inmediatamente. ;)
Aún así, algo no huele bien, no se debe restregar los datos antes de que sean transferidos lejos del usuario y hacia la capa de negocios donde se procesa y/o recoge, en lugar de al revés ? Estoy confundido sobre cómo esto contribuye a un buen diseño.
Parece que la regla de "decir, no preguntar" se refiere a la idea de que no debe preguntar al objeto de destino sobre el estado del objeto de destino, y que el principio nunca se pensó realmente para aplicar a los datos pasando a el objeto de destino.
excepciones están bien para el manejo de casos inesperados (memoria insuficiente/disco está lleno/conexión cerrada/transacción distribuida falló) - la validación de los datos enviados por el usuario no es inesperado. utilice el enfoque "controlador" en su lugar - solo llame a validate_number (invalid_handler_callback) –