2010-08-01 72 views
4

流利的API现在非常普遍。最近,我几乎在每个与我合作的系统中都能找到它们。大多数情况下,它们增强了可读性,但有时它们将我锁定在不灵活的规范上,使得理解规范的运行时行为几乎不可能。关于如何创建一个好流利的API有共识吗?使用流畅的API表示结构或规范的最佳方法是什么?C中的新风格#

我最近发现的流利API这种新颖的变体在NServiceBus配置类:

class EndpointConfig : IConfigureThisEndpoint, AsA_Server { } 

它使用多个接口作为一种线性流利接口。我喜欢它,因为当我只是试图表示简单的需求时,它不会给我带来额外代码和上下文的沉重负担。在简单的情况下就足够了。不过,我不认为它会扩展到复杂的规格。你如何看待这种接口的使用?

你在C#中使用了哪些新的成语?你在哪里使用它们?他们的优势是什么?你不会使用它们?另外,你如何评估你正在考虑使用的成语的优势?

+6

至少使这个社区Wiki。 – Joey 2010-08-01 12:55:26

+1

为什么?这不会产生对所有时间都会成真的答案 - 成语的变化,因此我要求更新! – 2010-08-01 23:14:01

回答

1

我曾经在表示不同行为的方法上回避布尔参数,例如我想借此

int ExpensiveComputation(bool useDiskCache)

,宁愿把它变成

int ExpensiveComputation(CacheType.DiskCache)

我大多首选,是因为当你调用ExpensiveComputation(true),目前还不清楚是什么true意味着不知道所有关于ExpensiveComputation,而ExpensiveComputation(CacheType.DiskCache)给你一个好主意。

但是,使用命名参数,我发现使用第一个参数经常可以接受,并且像这样调用它:ExpensiveComputation(useDiskCache: true)所以这是我为自己发明的最近成语。

+0

不错。我猜想流利的方法(我急于添加比你提议的更糟糕)会使用你以前的做法,但命名参数以提供流畅性:ExpensiveCalculation(使用:DiskCache);我想知道这是否在任何地方使用? – 2010-08-18 05:07:25