2010-08-01 74 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