Ema*_*sev 5 language-agnostic theory function function-declaration
这是DB规范化理论的一个概念:
当非关键字段是关于另一个非关键字段的事实时,违反了第三范式.
将类似的概念应用于函数/函数参数是否有意义?
考虑以下功能:
function validate(field, rule_name, rule_value);
// Usage
validate("password", "min_length", 6);
validate("password", "matches_regex", "/^\S+$/");
Run Code Online (Sandbox Code Playgroud)
在这个示例函数中,第三个参数描述了第二个参数并且似乎对第一个参数没有"态度".在某种程度上感觉就像一个非规范化的功能.
我不知道我是否正在制定这个,但我可以注意到表名和表字段,DB,函数名和函数参数之间的类比.
如果这样的比喻有意义,那么函数设计者从DB归一化理论中借用概念是否也有意义?
对我来说,该函数确实暗示了某种由值参数化的“规则”概念。如果您可以拥有此类规则/值对的列表并通过循环所有规则进行验证,那么它可以变得更加通用。
从另一个角度来看,如果按如下方式解释这些函数,似乎不会丢失任何东西:
function validate(field, rule);
// Usage
validate("password", MinLengthRule(6));
validate("password", RegExRule("/^\S+$/"));
Run Code Online (Sandbox Code Playgroud)