如果两个函数具有相同的参数集,则使用2个函数或仅使用一个函数?

时间:2016-01-26 14:10:04

标签: clojure

为了使代码更具可读性,有人建议一个函数应该做一些简单的事情,然后将函数组合成一个大函数。但是如果小函数可以接受相同的多组参数,如果使用多个函数,那么参数是重复的,在这种情况下如何编写更易读的代码?

例如在以下2个函数中,fun1和fun2具有相同的参数集,两者都只能接受一个参数,或者可以接受2个参数。如果使用一个函数(将代码从fun2复制到fun1),那么我不会复制参数集(一个用于参数,另一个用于2个参数)。有更好的方法吗?

<input type="checkbox" name="closed-' + rowCounter + '" id="closed-' + rowCounter + '" />

2 个答案:

答案 0 :(得分:0)

如果使用一个函数,则必须检查参数的值,因为函数的主体是不同的。我认为这将使您的代码不那么清晰,更难以遵循,如果可能的话,测试。代码中的一点重复有时是可以接受的,因此,如果我是你,我将保留2个函数。

答案 1 :(得分:0)

(comp do-something-to fun2)

......拥有fun2的所有元素。你是否给这个短语起了名字......

(def fun1 (comp do-something-to fun2))

......没有实际意义。

我假设你的fun1就像......

(defn fun1
  ([x] (fun1 x nil))
  ([x y] (do-something-to
         (fun2 x y)))
  )

您拥有的do不会影响返回的值。

顺便说一句,如果您想在(declare fun2)之前定义fun1,则需要先fun2