clojure comments marginalia

Cuál es la diferencia entre;y;; en los comentarios del código Clojure?



comments marginalia (7)

No hay diferencia en lo que respecta al intérprete. Pensar en ; ;; ;;; y ;;;; como diferentes niveles de encabezado.

Aquí está mi convención de uso personal:

;;;; Comentarios de nivel superior de archivo, como una descripción del archivo / módulo / espacio de nombres completo

;;; Documentación para las principales secciones de código (es decir, grupos de funciones) dentro del archivo.

;; Documentación para funciones individuales que se extiende más allá de la cadena de documentación (por ejemplo, una explicación del algoritmo dentro de la función)

; Comentarios en línea posiblemente en una sola línea, y posiblemente siguiendo una línea de código

Cuál es la diferencia entre ; y ;; al comenzar un comentario en Clojure? Veo que mi editor de texto los colorea de manera diferente, así que supongo que hay una cierta diferencia.

También veo que Marginalia los trata de manera diferente:

; Stripped entirely ;; Appears in text section of marginalia (defn foobar [] ; Appears in code section of marginalia output ;; Again, appears in code section of marginalia output 6)


sin significado para el lenguaje. ; es un lector macro para comment quizás otras herramientas analizarlas pero "dentro de clojure" son las mismas.


No hay diferencia desde una perspectiva Clojure. Encuentro eso ;; se destaca un poco mejor que ; , pero esa es solo mi opinión.

Marginalia, por otro lado, los trata de manera diferente porque hay momentos en que un comentario debe permanecer en la sección de código (por ejemplo, licencia) y los que están marcados con ; . Esta es una decisión arbitraria y puede cambiar en el futuro.


En los modos emacs lisp, incluido el modo clojure, ;; está formateado con la convención de estar al principio de una línea y sangrado como cualquier otra línea, según el contexto. ; se espera que se use al final de una línea, por lo que emacs no hará lo que usted quiera si coloca un comentario de punto y coma al principio de una línea esperando que tabule la sangría para el contexto actual.

Ejemplo:

(let [foo 1] ;; a comment foo) ; a comment


Echa un vistazo a la descripción oficial del significado de ; vs ;; en elisp: dado que el indentificador de Clojure es básicamente el mismo, los tratará de manera similar. Básicamente, uso ; si está escribiendo una oración larga / descripción "en los márgenes" que abarcará varias líneas, pero debe considerarse una sola entidad. Su ejemplo es:

(setq base-version-list ; there was a base (assoc (substring fn 0 start-vn) ; version to which file-version-assoc-list)) ; this looks like ; a subversion

El penetrador se asegurará de que estén alineados uno al lado del otro. Si, por el contrario, desea hacer varios comentarios de una sola línea sin relación uno al lado del otro, use ;; .

(let [x 99 ;; as per ticket #425 y "test"] ;; remember to test this (str x y)) ;; TODO actually write this function


Emacs; para ser utilizado para comentarios al final de la línea y sangrará de manera sorprendente si esa no es su intención. ;; no, así que suelo usar ;;

A Clojure no le importa; cualquier línea se ignora desde; a EOL.

Creo que hay una tradición en CL de usar números crecientes de; para indicar comentarios / secciones más importantes.


No estoy seguro (no usé Clojure y nunca escuché esto antes), pero este hilo podría ayudar.