雖然這篇Assertthat is false鄉民發文沒有被收入到精華區:在Assertthat is false這個話題中,我們另外找到其它相關的精選爆讚文章
在 assertthat產品中有1篇Facebook貼文,粉絲數超過7萬的網紅iThome,也在其Facebook貼文中提到, 【良葛格專欄】寫一手流暢的API 現在不少程式庫在使用風格上,採用了方法鏈串(Method chaining)創造出流暢語義,多數人耳熟能詳的實例就是jQuery,而Guava程式庫中,如ComparisonChain、Ordering,也採用了此風格,有些程式庫改版時亦從命令查詢(Comma...
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
assertthat 在 iThome Facebook 的最佳貼文
【良葛格專欄】寫一手流暢的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