1

作为一名设计师,我喜欢提供满足功率/简单性平衡的界面。例如,我认为 LINQ 设计者遵循了这一原则,因为他们提供了点表示法和查询表示法。第一个功能更强大,但第二个更易于阅读和遵循。如果您不同意我对 LINQ 的评估,请尝试理解我的观点;LINQ 只是一个例子,我的帖子不是关于 LINQ。

我把这个原则称为“可拨号电源”。但我想知道其他人怎么称呼它。当然有些人会说“KISS”是常用词。但我认为 KISS 是一种超集,或一种“消费主义”实践。再次使用 LINQ 作为我的示例,在我看来,一个总是尝试使用查询表示法而不是点表示法的程序员团队正在练习 KISS。因此,LINQ 设计者实践了“可拨号电源”,而 LINQ 消费者实践了 KISS。两人一起创作美妙的音乐。

编辑我再举一个例子。想象一个日志工具有两个签名,允许两种用途:

void Write(string message);
void Write(Func<string> messageCallback);

这两个签名的目的是满足这些需求:

//Every-day "simple" usage, nothing special.
myLogger.Write("Something Happened" + error.ToString() );

//This is performance critical, do not call ToString() if logging is
//disabled.
myLogger.Write( () => { "Something Happened" + error.ToString() });

拥有这些重载代表“可拨号能力”,因为消费者可以选择简单接口或功能强大的接口。喜欢 KISS 的消费者大部分时间会使用更简单的签名,并在需要电源时允许看起来“忙碌”的签名。这也有助于自我记录,因为使用强大的签名会告诉读者代码对性能至关重要。如果记录器只有强大的签名,那么就没有“可拨电源”。

所以这是一个完整的循环。如果尚不存在的话,我很乐意保留我自己的“可拨号电源”造币,但我不禁认为我错过了这种做法的明显名称。

ps 另一个相关但与“可拨号电源”不同的例子是 Scott Meyer 的原则“使接口易于正确使用,而难以错误使用”。

4

3 回答 3

1

“逐步披露。”

您可能已经熟悉该术语,因为它与用户界面一起使用——例如,“更多”按钮。但是,这个概念更笼统。

来自 Lidwell、Holden 和 Butler 的“通用设计原则”:

   Progressive disclosure involves separating information into 
   multiple layers and only presenting layers that are necessary or relevant. 
于 2011-03-15T15:39:35.860 回答
1

如果您的“表盘”只有两个位置/级别,那么听起来您只是在指代一个façade

于 2011-02-02T18:20:41.280 回答
0

我把这个原则称为“可拨号电源”。但我想知道其他人怎么称呼它。

我个人从未听说过“可拨号电源”,我认为它不是行业标准术语。

对于 LINQ,我们将其设计称为fluent interface

Fluent 接口的设计使得对象上的所有方法都返回与该对象相同的类型,因此使方法链接变得容易。您可以在StringBuilder.Append重载、流畅的 NHibernateRhinoMocks中看到相同的流畅设计。

在 JQuery 的情况下,它还使用流式接口进行方法链接,但我相信“查询”或“DSL”是其选择器表示法的正确名称

Obj-C 选择器使用相同的术语,但描述的东西完全不同。)

由于它被描述为一个查询 DSL,因此大多数人可以推断它以一个序列作为输入并返回一个序列作为输出。查询表示法执行与 XPath 大致相同的功能,但功能更多。

Hibernate HQL是在许多 SQL 方言之上的查询 DSL,从表面上看,正则表达式是一种查询 DSL,它将字符串序列转换为一组新的字符串序列(原则上,您可以为正则表达式创建一个流畅的接口,但是它可能会让你睁大眼睛)。

于 2011-02-02T17:58:12.660 回答