2012-06-01 12 views
29

Cuando defino una función privada en Clojure, generalmente uso un prefijo - como un indicador visual de que la función no se puede usar fuera de mi espacio de nombres, p.¿Hay alguna convención de Clojure para nombrar funciones privadas?

(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.

¿Hay alguna convención generalmente aceptada para las funciones defn- en la comunidad Clojure, o debería simplemente usar nombres sin prefijo?

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

Respuesta

40

No hay una convención; el indicador visual prevalece en los idiomas sin una 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;)

Haga lo que haga, pero probablemente debería hacer lo mismo que el resto de la comunidad y ¡solo nómbrelos normalmente! Te hará la vida más fácil.

+0

Hace sentido. ¡Gracias! –

23

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

(defn ^:private foo []) 
+1

Y para hacer esto para el espacio de nombre actual: '(def ^: private -ns- * ns *)' – nuaavee

Cuestiones relacionadas