首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >功能“规范化”

功能“规范化”
EN

Stack Overflow用户
提问于 2011-02-28 16:07:21
回答 3查看 132关注 0票数 5

以下是DB规范化理论中的一个概念:

当非键字段是关于另一个非键字段的事实时,就违反了

第三范式。

对函数/函数参数应用类似的概念难道没有意义吗?

考虑以下职能:

代码语言:javascript
复制
function validate(field, rule_name, rule_value);

// Usage

validate("password", "min_length", 6);
validate("password", "matches_regex", "/^\S+$/");

在此示例函数中,第三个参数描述第二个参数,似乎对第一个参数没有“态度”。在某种程度上,这就像是一种非规范化的功能。

我不知道是否正确,但我可以注意到在DB中的表名和表字段以及函数名和函数参数之间存在相似之处。

如果这样的类比是有意义的,那么函数设计者借用DB规范化理论的概念是否也是有意义的呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-28 16:50:25

对我来说,这个函数确实暗示了某种“规则”概念,它被一个值参数化了。如果您可以有这样的规则/值对的列表,并通过循环遍历所有规则来验证,那么它可以变得更通用。

从另一个角度来看,如果您将这些功能解释为:

代码语言:javascript
复制
function validate(field, rule);

// Usage

validate("password", MinLengthRule(6));
validate("password", RegExRule("/^\S+$/"));
票数 3
EN

Stack Overflow用户

发布于 2011-02-28 17:27:47

在使用策略设计模式时,请考虑示例的OOP变体。在这种情况下,规则名作为Rule类的属性是很自然的(至少对我来说是这样),这将支持您的想法。

票数 1
EN

Stack Overflow用户

发布于 2011-02-28 16:10:37

不同意。6没有描述min_length。只有两者都能创造出有意义的东西。

垃圾字符也没有任何意义,除非您注意到它是regexp。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5144410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档