2014-09-22 20 views
2

我經常發現自己寫的功能是這樣的:是否讓複雜的函數具有良好的編碼風格?

(defn my-function [arg] 
    (let [x (foo arg) 
     y (bar x) 
     z (baz x)] 
    (make-result y z))) 

所以不是寫(make-result (bar (foo arg)) (baz (foo arg)))我的代碼分成一組臨時綁定。 (當然,綁定通常比這個簡單的例子更復雜。)

我不特別喜歡核心函數邏輯包含在let綁定中。

編寫這樣的代碼序列是否有更好的約定?

+0

我*喜歡*你的風格。如果你正在編寫一個複雜的代數表達式,你可能會將它分解成幾個命名的子表達式。 ['algo.graph'庫](https://github.com/clojure/algo.graph)始終使用這種表達方式。然而,這都是意見,所以你的問題在這裏不合適。並應該是EXTERMINATED! – Thumbnail 2014-09-22 17:44:27

回答

3

這是慣用的,並且let是明確的順序,並且期望以這種方式使用。特別是因爲這避免了兩次調用(foo arg)(Clojure不夠純粹,編譯器可以自動將它轉換爲foo的單個調用)。

相關問題