是否使用绑定良好的编码风格来分解复杂的函数?

时间:2014-09-22 17:27:28

标签: clojure coding-style

我经常发现自己写这样的函数:

(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绑定中。

编写这样的代码序列是否有更好的约定?

1 个答案:

答案 0 :(得分:3)

这是惯用的,let是明确顺序的,并且预计会以这种方式使用。特别是因为这避免了两次调用(foo arg)(Clojure不是那么纯粹,以至于编译器可以自动将其转换为对foo的单个调用)。