clojure naming-conventions

¿Hay alguna convención de Clojure para nombrar funciones privadas?



naming-conventions (2)

Cuando defino una función privada en Clojure, generalmente uso un prefijo como indicador visual de que la función no se puede usar fuera de mi espacio de nombres, por ejemplo

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

Pero el prefijo - parece ser también una convención para los métodos públicos cuando se utiliza gen-class .

¿Existe alguna convención generalmente aceptada para las funciones de defn- en la comunidad de Clojure, o simplemente debo usar nombres sin prefijo?

Parece que una gran cantidad de código en clojure.contrib (que descanse en paz) usa nombres normales para funciones privadas, así que tal vez sea lo mejor, pero realmente me gusta el indicador visual, ¡tal vez mi fondo C / Perl es demasiado fuerte! ;)


No conozco ninguna convención de nombres, pero puede adjuntar ^:private etiqueta de metadatos ^:private para definir funciones privadas. Esto es exactamente equivalente a defn- , pero es un poco más claro, en mi humilde opinión.

(defn ^:private foo [])


No hay una convención; el indicador visual prevalece en idiomas sin noción incorporada de funciones privadas. Dado que las funciones de Clojure definidas con defn- no son visibles fuera de su espacio de nombres, no hay necesidad de prefijar funciones con un uglifier;)

Así que haz lo que quieras pero, ¡probablemente deberías querer hacer lo que hace el resto de la comunidad y nombrarlos normalmente! Te hará la vida más fácil.