2012-05-24 13 views
11

Jak widać, clojure ma więcej znaków dla nazwy zmiennej niż c/C++/java. Na przykład:Jaka jest zwykle zasada nazewnictwa w clojure?

Funkcje kończą się na "?" zwykle zwracają wartość logiczną, są to predykaty.

Dostępne są również zmienne rozpoczynające się od "-" lub kończące się na "!".

Myślę, że to wszystko nazywanie stylu clojure. Jaka jest więc zwyczajowa zasada nazewnictwa w clojure? czy jest coś wspólnego dla programistów clojure?

+0

Prawdopodobny duplikat pytania z 2011: http://stackoverflow.com/questions/6709131/what-are-clojures-name-conventions –

Odpowiedz

19

Warto patrząc na Clojure na Library Coding Standards którym myślę nadal prawdopodobnie najlepszy odniesienia na Clojure stylu kodowania.

głównych konwencji funkcja nazewnictwa wydają się być:

  • używać nazwy funkcji małe: frobnicate
  • Wiele nazw słowo wykorzystują myślniki jako separatory: frobnicate-with-extra-fizz
  • używać nazw, co pozwala na ponowne wykorzystanie dobro w razie potrzeby: my.special.collection/concat
  • Użyj ?, aby wskazać predykat, który zwraca wartość true lub false: sequential?
  • Zastosowanie ! wskazać funkcję z efektów ubocznych, które nie są bezpieczne transakcja, np set!

dla zmiennych lokalnych Poniższy są wspólne:

  • f, g, h - Funkcje
  • n - liczba całkowita reprezentująca rozmiar lub liczba
  • index, i - indeks liczby całkowitej
  • x, y - numery
  • s - ciąg wejściowy
  • coll - kolekcja
  • pred - zamknięcie orzecznik
  • & more - wejście o zmiennej liczbie argumentów
+1

Czasami widziałem niektóre funkcje o nazwie * na końcu, jak foo *. Co znaczy *? – DanLebrero

+2

To jest dobra odpowiedź, ale mam jedną nitkę. Myślę, że '?' Powinno być używane tylko dla funkcji, które faktycznie zwracają "true" lub "false". Zobacz dokument połączony: "Użyj"? przyrostek dla predykatów N.B. - predykaty zwracają booleans ". Przykładem tego jest rdzeń ['some'] (http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/some) i ["every?"] (http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/every?). – spacemanaki

+0

@dAni: Edytowałem w materiałach o 'foo *' (i '* foo *' dla dokładnej miary.) – thedayturns

Powiązane problemy