以下是DB规范化理论中的一个概念:
当非键字段是关于另一个非键字段的事实时,就违反了
第三范式。
对函数/函数参数应用类似的概念难道没有意义吗?
考虑以下职能:
function validate(field, rule_name, rule_value);
// Usage
validate("password", "min_length", 6);
validate("password", "matches_regex", "/^\S+$/");在此示例函数中,第三个参数描述第二个参数,似乎对第一个参数没有“态度”。在某种程度上,这就像是一种非规范化的功能。
我不知道是否正确,但我可以注意到在DB中的表名和表字段以及函数名和函数参数之间存在相似之处。
如果这样的类比是有意义的,那么函数设计者借用DB规范化理论的概念是否也是有意义的呢?
发布于 2011-02-28 16:50:25
对我来说,这个函数确实暗示了某种“规则”概念,它被一个值参数化了。如果您可以有这样的规则/值对的列表,并通过循环遍历所有规则来验证,那么它可以变得更通用。
从另一个角度来看,如果您将这些功能解释为:
function validate(field, rule);
// Usage
validate("password", MinLengthRule(6));
validate("password", RegExRule("/^\S+$/"));发布于 2011-02-28 17:27:47
在使用策略设计模式时,请考虑示例的OOP变体。在这种情况下,规则名作为Rule类的属性是很自然的(至少对我来说是这样),这将支持您的想法。
发布于 2011-02-28 16:10:37
不同意。6没有描述min_length。只有两者都能创造出有意义的东西。
垃圾字符也没有任何意义,除非您注意到它是regexp。
https://stackoverflow.com/questions/5144410
复制相似问题