是否有命名私有函数的Clojure约定?

时间:2012-06-01 07:48:37

标签: clojure naming-conventions

当我在Clojure中定义私有函数时,我通常使用-前缀作为可视指示符,该函数不能在我的命名空间之外使用,例如。

(defn- -name []
  (let [formatter (formatter "yyyy-MM-dd-HH-mm-ss-SSSS")]
    (format "fixjure-%s" (unparse formatter (now)))))

-前缀在使用gen-class时似乎也是公共方法的惯例。

Clojure社区中是否存在普遍接受的defn- d函数约定,还是应该使用非前缀名称?

似乎clojure.contrib中的许多代码(可能它安静地使用)使用普通名称作为私有函数,所以也许这是最好的,但我真的很喜欢视觉指示器 - 也许我的C / Perl背景只是太强大! ;)

2 个答案:

答案 0 :(得分:44)

没有惯例;视觉指示器在没有内置私人功能概念的语言中很流行。由于Clojure使用defn-定义的函数在其命名空间之外是不可见的,因此不需要使用uglifier为函数添加前缀;)

那么你做了什么,但是你应该像社区的其他人一样做,只是正常命名!它会让你的生活更轻松。

答案 1 :(得分:23)

我不知道任何命名约定,但您可以附加^:private元数据标记来定义私有函数。这完全等同于defn-,但有点清楚,恕我直言。

(defn ^:private foo [])