2012-05-24 24 views
11

Gördüğünüz gibi clojure, c/C++/java'dan daha fazla karaktere sahip. Örneğin:clojure'da her zamanki adlandırma kuralı nedir?

İşlevler '?' Ile biter. genellikle bir Boolean döndürür, onlar yüklemektedir.

Ayrıca '-' ile başlayan veya '!' Ile biten değişkenler de vardır.

Bunların hepsi clojure tarzı adlandırma olduğunu düşünüyorum. Yani, clojure her zamanki adlandırma kuralı nedir? clojure programcıları için ortak bir şey var mı?

+0

Bir 2011 sorusunun olası kopyası: http://stackoverflow.com/questions/6709131/what-are-clojures-naming-conventions –

cevap

19

O Clojure en Bence Library Coding Standards bakarak değer muhtemelen hala Clojure kodlama stili için en iyi referanstır.

  • Kullanım küçük fonksiyon isimleri: frobnicate
  • Çok sözcüklü isimleri ayırıcı olarak tire kullanın: frobnicate-with-extra-fizz
  • Kullanım ad alanları iyi kullanımlık yeniden izin vermek

    ana işlevi adlandırma kuralları

    görünmektedir gerekirse adları: my.special.collection/concat
  • Doğru veya yanlış döndüren bir yüklemi belirtmek için ? kullanın: sequential?
  • Yerel değişkenler için set!

aşağıdaki yaygındır:

  • kullanın ! işlemin güvenli değildir yan etkileri olan bir işlev, örneğin belirtmek için

    • f, g, h - fonksiyonlar
    • n - bir boyutu veya tamsayıyı temsil eden tam sayı
    • index, i - tam sayı dizini
    • x, y - sayılar
    • s - dize girişi
    • coll - koleksiyonu
    • pred - Bir yüklem kapatma
    • & more -
  • +1

    Bazen foo * gibi bir * ile adlandırılmış bazı işlevler görmüştüm. Bunun anlamı nedir? – DanLebrero

    +2

    Bu iyi bir cevap ama bir nitpick var. Bence '' 'aslında 'gerçek' ya da 'yanlış' döndüren işlevler için kullanılmalıdır. Bağlı dokümana bakın: "Kullanın"? yüklemeler için son ek. N.B. - booleanları döndürmeyi önerir ". Çekirdekte bunun bir örneği ['' '' (http://clojure.github.com/clojure/clojure.core-api.html#clojure) 'dir.çekirdek/bazı) ve ['her?'] (http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/every?). – spacemanaki

    +0

    @dAni: 'foo * '(ve iyi bir ölçüt için * foo *') ile ilgili bir şeyde düzenledim. – thedayturns

    İlgili konular