¿Cuáles son las Convenciones de Nombramiento de Clojure?
naming-conventions (4)
¿Alguien puede explicarme o señalarme dónde puedo encontrar las convenciones de nomenclatura de clojure para:
- Nombres de archivo
- Funciones (por lo que entiendo, los nombres de las funciones son simplemente valores separados por guiones)
- Variables
Aunque no lo solicitó explícitamente, explicaré lo que he visto para las convenciones de nombres de protocolo.
Normalmente, el nombre comienza con una "I" en mayúscula y el resto es en camello, donde la primera letra de cada palabra está en mayúscula y el resto en minúscula. Por ejemplo, quiero definir un protocolo para naves espaciales, usaría el nombre IRocketShip
También he visto ''A'' en lugar de ''I'' usado, probablemente para representar la palabra ''abstracto''.
Es posible que desee consultar los estándares de codificación de la biblioteca Clojure en Wiki del desarrollador: esta es probablemente la lista más exhaustiva que he visto.
Para sus puntos específicos:
- Los nombres de los archivos están en minúscula, y se almacenan en una estructura de directorio para que coincida con el espacio de nombres, y terminan en .clj, por ejemplo, "my / special / namespace.clj"
- Las funciones son palabras minúsculas separadas por guiones, elegidas idealmente de forma descriptiva para que el código sea claro y autodocumentado. No tenga miedo de volver a utilizar buenos nombres de funciones en diferentes espacios de nombres (¡para eso son los espacios de nombres!).
- Las variables (por las cuales supongo que usted quiere decir parámetros, variables de límite permitido, etc.) también suelen ser palabras separadas por guion y minúsculas. Como code-is-data, creo que es apropiado que las funciones y los datos tengan la misma convención de nomenclatura :-)
Es posible que desee echar un vistazo a esta guía de estilo no oficial .
Hay algunas pautas interesantes sobre nombres escritos por Stuart Sierra que sugieren que:
- las funciones puras deben ser sustantivos que describan el valor de retorno (
age
lugar decalculate-age
) - las funciones de efecto secundario deben ser verbos que describan la acción (
create-
para construir y obtener-para recuperar), ¡reservando elswap!
instantáneoswap!
cambios a referencias mutables. - los verbos que también pueden ser sustantivos deben distinguirse como frases verbales (
send-message
lugar demessage
) - las coerciones deben nombrar el tipo de salida sin un prefijo de flecha (
connection
lugar de->connection
) excepto cuando el tipo de entrada debe ser explícito (tipo deinput-type->output-type
) - los alias de espacio de nombres pueden ahorrar en la repetición (
products/price
lugar deproducts/price
delproducts/product-price
) y evitar conflictos locales en soltar enlaces - funciones que devuelven funciones deben tener el sufijo
-fn