【良葛格專欄】寫一手流暢的API
現在不少程式庫在使用風格上,採用了方法鏈串(Method chaining)創造出流暢語義,多數人耳熟能詳的實例就是jQuery,而Guava程式庫中,如ComparisonChain、Ordering,也採用了此風格,有些程式庫改版時亦從命令查詢(Command-Query)風格,丕變為流暢API風格,像是Quartz,此類風格似乎打破了一些設計原則?
流暢API設計,就等於方法鏈串嗎?
在考量到可讀性之後,實作的形式就多元化了。實際上,流暢介面與流暢API之間不畫上等號。
方法鏈串是流暢API常見但不是唯一實現方式,Martin Fowler在2008年對〈FluentInterface〉的補充說明了這點,像是Hamcrest就採用工廠方法等模式,實現了assertThat(numbers, everyItem(lessThan(5)))之類的風格。然而,不用拘泥於名詞,流暢API的重點或許在思考:打破原則或概念是可以創造可讀性,分寸在哪呢?
大部份設計原則考量的都是職責清晰,降低耦合度,必定優先遵守,以命令查詢分離概念來說,設計API時應該優先考量,其次在一些語義明確或慣例的情境下,若有助於可讀性則可考慮通融,像是堆疊的pop方法。
如果物件不可變,由於操作總得傳回結果,你可以傳回新物件,以方法鏈串創造流暢性;如果物件可變,且是個值物件,考慮傳回本身,讓查詢方法傳回型態來洩露命令操作的差異,並明確在文件上說明傳回型態是否為本身,作為API使用者也務必確認這點;如果目標是構成一個內部DSL,那在型態與方法名稱上,就得多下點功夫,一切都以可讀性為出發點,API才有流暢的可能性
完整內容請看
http://www.ithome.com.tw/itadm/article.php?c=83412&s=1
jquery chaining 在 jQuery method chaining - YouTube 的推薦與評價

Link for all dot net and sql server video tutorial playlistshttps://www.youtube.com/user/kudvenkat/playlists?sort ... ... <看更多>
jquery chaining 在 tuupola/jquery_chained: Chained Selects for jQuery and Zepto 的推薦與評價
Chained is simple plugin for chained selects. It works with both jQuery and Zepto. You can choose from two different versions. Use jquery.chained.js if you ... ... <看更多>
jquery chaining 在 how does jquery chaining work? - Stack Overflow 的推薦與評價
... <看更多>
相關內容