iT邦幫忙

0

關於Fluent interface, 各位有什麼看法,想法或者經驗分享

在逛ithome blog時, 看到這個東東
http://www.ithome.com.tw/plog/index.php?op=ViewArticle&articleId=18421&blogId=257

於是就去查一下資料
歐萊禮的介紹
http://beautifulcode.oreillynet.com/2007/12/the_cardinality_of_a_fluent_in.php

wiki的說明
http://en.wikipedia.org/wiki/Fluent_interface

內容都有提到程式的簡潔及易讀性
甚至可以將程式語法當作文章朗讀
也有提出一些程式的例子

接著又找到以下網址
http://www.jmock.org/
它是JMock testing framework, 專門做java程式的單元測試
是實際使用Fluent interface的最佳範本。

有幾點想法及問題

  1. 程式碼是給工程師看的, 這個方法很炫。

  2. 什麼時候用這個方式才適合呢??

  3. 對於維護修改時, 會遇到什麼問題呢??

  4. 程式例子裡, 大部份都是輸入資料的method, 最後才是真正執行的method
    以語法的簡潔性來看, 在vb有With...End With可以用, 一樣也可以達到效果

    With object
    statements
    End With

wordsmith iT邦高手 1 級 ‧ 2008-07-03 13:57:33 檢舉
用jQuery的時候,它也是用這種方式串接,用起來的感覺很神奇,不過如果在串接method的語意不夠清楚的情況下,有時候接太長,是會亂掉。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

22
fillano
iT邦超人 1 級 ‧ 2008-07-03 13:34:57
最佳解答

加上幾個連結做參考:
Martin Fowler的文章:http://www.martinfowler.com/bliki/FluentInterface.html
JMock作者們的blog:http://www.mockobjects.com
JMock作者們在2006 OOPLSA發表的論文:Evolving a Domain-Specific Language in Java, OOPLSA 2006

我想跟with的差別在於,他會設計好用特定語意命名的方法,讓你可以把這些方法串接起來組成定的操作來使用,就像用單字組成句子一樣。(所以會提到Domain-Specific Language,最好的例子是SQL)

用with應該還是沒辦法這樣串接方法來用的吧?

看更多先前的回應...收起先前的回應...
aqr199 iT邦新手 2 級 ‧ 2008-07-03 16:09:26 檢舉

to fillano:
with是無法進行這樣子串接的動作, 因為二者思考點及進入點不一樣

所以需要比較的應該是二者解決使用者那些問題,
以及可能產生那些困擾

fillano iT邦超人 1 級 ‧ 2008-07-04 09:39:28 檢舉

沒錯,所以怎麼設計還是很重要。

效能的問題,則要看是否「真」的變成問題。其實以jQuery來說,他許多使用方法都要做遍歷DOM Tree的搜尋,應該是很花時間,只是對現在的電腦速度很快,所以實際上感覺沒差。使用上還是要看代價(速度)跟效果(方便)的平衡吧。

我大概7、8年前用javascript跟html實做過isometric地圖,當時跑的速度很慢,現在已經跑的很順了....(最早是用DHTML為主,後來改成以Javascript為主,加上A*做路徑搜尋,不過這也是幾年前的東西了)

fillano iT邦超人 1 級 ‧ 2008-07-04 10:41:40 檢舉

我用blog上的例子稍做修改,分別用FluentInterface以及傳統的方式跑10萬次迭代,用FluentInterface style的花1.382秒,傳統的花1.287秒。所以看得出來是有一些scope搜尋的overhead,不過會不會影響使用者的感覺呢?可能要看實際狀況了。不過我猜應該不嚴重。

fillano iT邦超人 1 級 ‧ 2008-07-04 10:46:51 檢舉

等一下,前面是ff3的結果....用IE7跑的時候,FluentInterface的反而快一點,大概0.03秒。

aqr199 iT邦新手 2 級 ‧ 2008-07-04 15:48:28 檢舉

to fillano:

_< 您真是有夠認真, 汗顏丫~~

如果效能不是問題的話, 那就跟末端使用者無關了
就要看程式設計人員的反應了
這樣子的簡潔跟易讀
對於現行的程式設計人員的幫助, 有嗎??

常會遇到的情況, 通常是為了程式的簡潔, 犧牲了易讀性

我要發表回答

立即登入回答