2012-05-24 13 views
11

Come vedo, Clojure ha più caratteri per il nome della variabile di c/C++/java. Ad esempio:Qual è la solita regola di denominazione in clojure?

Le funzioni terminano con "?" di solito restituiscono un booleano, sono predicati.

Esistono anche variabili che iniziano con "-" o che terminano con "!".

Penso che questi siano tutti nomi in stile clojure. Quindi, qual è la solita regola di denominazione in clojure? c'è qualcosa in comune per i programmatori clojure?

+0

Eventuale duplicato di una domanda del 2011: http://stackoverflow.com/questions/6709131/what-are-clojures-naming-conventions –

risposta

19

Vale la pena guardare Clojure di Library Coding Standards che credo sono ancora probabilmente il miglior riferimento stile di codifica Clojure.

Le principali convenzioni funzione di denominazione sembrano essere:

  • Utilizzare i nomi di funzione in minuscolo: i nomi di parola frobnicate
  • più utilizzare i trattini come separatori: frobnicate-with-extra-fizz
  • Utilizzare spazi dei nomi per consentire di riutilizzare buona nomi se necessario: my.special.collection/concat
  • Utilizzare ? per indicare un predicato che restituisce vero o falso: sequential?
  • Usa ! per indicare una funzione con effetti collaterali che non è sicuro di transazione, ad esempio: set!

per le variabili locali i seguenti comuni:

  • f, g, h - funzioni
  • n - numero intero che rappresenta una dimensione o un conteggio
  • index, i - indice intero
  • x, y - numeri
  • s - stringa di input
  • coll - una collezione
  • pred - una chiusura predicato
  • & more - ingresso variadic
+1

A volte ho visto alcune funzioni denominate con un * alla fine, come foo *. Cosa significa *? – DanLebrero

+2

Questa è una buona risposta, ma ho un nitpick. Penso che '?' Dovrebbe essere usato solo per funzioni che restituiscono effettivamente 'true' o' false'. Vedi il documento collegato: "Usa"? " suffisso per predicati. N.B. - predicati return booleans ". Un esempio di questo nel nucleo è ['some'] (http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/alcuni) e ['every?'] (http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/every?). – spacemanaki

+0

@dAni: ho modificato in roba su 'foo *' (e '* foo *' per buona misura.) – thedayturns

Problemi correlati