Aquí hay un concepto de la teoría de la normalización DB:Función "normalización"
tercera forma normal, se viola cuando un campo no es un hecho clave sobre otro campo que no son clave.
¿No tiene sentido que se aplique un concepto similar para los parámetros de función/función?
considera la siguiente función:
function validate(field, rule_name, rule_value);
// Usage
validate("password", "min_length", 6);
validate("password", "matches_regex", "/^\S+$/");
En esta función ejemplo, el tercer parámetro describe el segundo y parece no tener "actitud" hacia la primera. Se siente como una función desnormalizada en cierto modo.
No sé si estoy formulando este derecho, pero puedo observar una analogía entre los nombres de tabla y los campos de tabla, en la base de datos, y los nombres de función y parámetros de función.
Si tal analogía tiene sentido, ¿no tendría sentido para los diseñadores de funciones tomar prestados conceptos de la teoría de normalización de DB?
Estoy tan contento de que hayas publicado esto porque ahora sé que no soy solo yo el que siente que hay algo mal con la función. Pero, ¿qué es lo que hace que se sienta mal? ¿Qué "regla" viola? –
@Emanuil Si tuviera que apuñalarlo, la función original viola la separación de preocupaciones: el método @ MadKeithV permite que la función 'validate' tenga su comportamiento de validación real inyectado, lo que lo hace altamente reutilizable. El original, incluso con los ejemplos simples dados, requiere múltiples firmas para acomodar reglas en diferentes tipos de datos. –
@djacobson - sí, gracias, eso es lo que estaba en mi mente. La validación se convierte en una función única con una firma, y una "regla" se convierte en una abstracción que se puede extender fácilmente para procesar cualquier cadena de "campo" y devolver un valor booleano para indicar si la cadena pasa la validación o no. –