est ici un concept de la théorie de la normalisation DB:Fonction « normalisation »
Troisième forme normale est violée lorsqu'un champ non-clé est un fait d'un autre domaine non-clé.
N'est-il pas logique qu'un concept similaire soit appliqué aux fonctions/paramètres de fonction?
Tenir compte de la fonction suivante:
function validate(field, rule_name, rule_value);
// Usage
validate("password", "min_length", 6);
validate("password", "matches_regex", "/^\S+$/");
Dans cet exemple, la fonction, le troisième paramètre décrit la deuxième et semble ne pas avoir « attitude » vers le premier. Cela ressemble à une fonction dénormalisée d'une certaine manière. Je ne sais pas si je formule ce droit, mais je peux remarquer une analogie entre les noms de table et les champs de table, dans la base de données, et les noms de fonction et les paramètres de fonction.
Si une telle analogie a du sens, cela n'aurait-il pas aussi un sens pour les concepteurs de fonctions d'emprunter des concepts à la théorie de la normalisation de DB?
Je suis tellement contente que tu aies posté ça parce que maintenant je sais que ce n'est pas seulement moi qui pense qu'il y a quelque chose qui cloche avec la fonction. Qu'est-ce qui fait qu'il se sent mal, cependant? Quelle «règle» viole-t-elle? –
@Emanuil Si je devais y aller, la fonction d'origine viole la séparation des préoccupations: La méthode de @ MadKeithV permet à la fonction 'validate' d'avoir son propre comportement de validation injecté, ce qui la rend hautement réutilisable. L'original, même avec les exemples simples donnés, nécessite plusieurs signatures pour s'adapter aux règles sur différents types de données. –
@djacobson - oui, merci, c'est en fait ce qui me restait à l'esprit. La validation devient une fonction unique avec une signature, et une "règle" devient une abstraction qui peut être facilement étendue pour traiter n'importe quelle chaîne "champ" et renvoyer une valeur booléenne pour dire si la chaîne passe la validation ou non. –