2012-05-24 17 views
11

Como veo, clojure tiene más caracteres para nombre de variable que c/C++/java. Por ejemplo:¿Cuál es la regla de nomenclatura habitual en clojure?

Las funciones terminan con '?' generalmente devuelven un booleano, son predicados.

También hay variables que comienzan con '-', o que terminan con '!'.

Creo que estos son todos los nombres de estilo clojure. Entonces, ¿cuál es la regla de nombramiento habitual en clojure? ¿Hay algo en común para los programadores de clojure?

+0

Posible duplicado de una pregunta de 2011: http://stackoverflow.com/questions/6709131/what-are-clojures-naming-conventions –

Respuesta

19

Es digno de mirar Clojure de Library Coding Standards que creo que siguen siendo probablemente la mejor referencia de estilo de codificación Clojure.

Las principales convenciones de nombrado parecen ser:

  • Use nombres de funciones en minúsculas: frobnicate
  • múltiples nombres de las palabras utilizan guiones como separadores: frobnicate-with-extra-fizz
  • Use espacios de nombres que le permiten volver a utilizar buena nombres si es necesario: my.special.collection/concat
  • Utilice ? para indicar un predicado que devuelve verdadero o falso: sequential?
  • Uso ! para indicar una función con efectos secundarios que no es seguro transacción, por ejemplo: set!

Para las variables locales Los siguientes son comunes:

  • f, g, h - funciones
  • n - entero que representa un tamaño o un recuento
  • index, i - índice entero
  • x, y - números
  • s - cadena de entrada
  • coll - una colección
  • pred - un cierre predicado
  • & more - entrada variadic
+1

A veces he visto algunas funciones nombradas con un * al final, como foo *. ¿Qué significa *? – DanLebrero

+2

Esta es una buena respuesta, pero tengo una nitpick. Creo que '' 'solo debería usarse para funciones que realmente devuelven' true' o 'false'. Ver el documento vinculado: "Usar"? sufijo para predicados. N.B. - predicados devuelven booleanos ". Un ejemplo de esto en core es ['some'] (http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/some) y ['every?'] (http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/every?). – spacemanaki

+0

@dAni: edité en cosas sobre 'foo *' (y '* foo *' para una buena medida). – thedayturns

Cuestiones relacionadas