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

Jos*_*ver 33 clojure naming-conventions

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

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

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

是否有任何普遍接受defn-的Clojure社区中的d函数约定,或者我应该只使用非前缀名称?

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

Isa*_*aac 45

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

那么你做什么,但你可能想要像其他社区一样做,只是正常命名!它会让你的生活更轻松.


Jul*_*ang 23

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

(defn ^:private foo [])
Run Code Online (Sandbox Code Playgroud)