是否有命名私有函数的Clojure约定?
当我在Clojure中定义私有函数时,我通常使用是否有命名私有函数的Clojure约定?,clojure,naming-conventions,Clojure,Naming Conventions,当我在Clojure中定义私有函数时,我通常使用-前缀作为视觉指示器,表明该函数不能在我的命名空间之外使用,例如 (defn- -name [] (let [formatter (formatter "yyyy-MM-dd-HH-mm-ss-SSSS")] (format "fixjure-%s" (unparse formatter (now))))) 但是-前缀似乎也是使用gen类时公共方法的惯例 Clojure社区中的defn-'d函数是否有任何公认的约定,或者我应该简单地使
-
前缀作为视觉指示器,表明该函数不能在我的命名空间之外使用,例如
(defn- -name []
(let [formatter (formatter "yyyy-MM-dd-HH-mm-ss-SSSS")]
(format "fixjure-%s" (unparse formatter (now)))))
但是-
前缀似乎也是使用gen类时公共方法的惯例
Clojure社区中的defn-
'd函数是否有任何公认的约定,或者我应该简单地使用不带前缀的名称
clojure.contrib中的许多代码(祝它安息)对私有函数使用普通名称,所以这可能是最好的,但我真的很喜欢视觉指示器——也许我的C/Perl背景太强了!;) 没有约定;视觉指示器在没有内置私有函数概念的语言中很普遍。由于Clojure用defn-
定义的函数在其名称空间之外不可见,因此不需要在函数前面加上uglifier;)
所以,做你想做的,但你可能想做的只是社区的其他人做的,只是正常命名他们!这将使您的生活更轻松。我不知道任何命名约定,但您可以附加^:private
元数据标签来定义私有函数。这完全等同于defn-
,但更清楚一点,IMHO
(defn ^:private foo [])
要对当前名称空间执行此操作:(def^:private-ns-*ns*)
多么漂亮的语言设计!