2012-06-01 12 views
29

Wenn ich eine private Funktion in Clojure definieren, verwende ich normalerweise ein - Präfix als visueller Indikator, dass die Funktion nicht außerhalb meines Namensraums verwendet werden kann, z.Gibt es eine Clojure-Konvention für die Benennung privater Funktionen?

(defn- -name [] 
    (let [formatter (formatter "yyyy-MM-dd-HH-mm-ss-SSSS")] 
    (format "fixjure-%s" (unparse formatter (now))))) 

Aber der - Präfix scheint auch eine Konvention für öffentliche Methoden zu sein, wenn gen-class verwendet.

Gibt es eine allgemein akzeptierte Konvention für defn- 'd Funktionen in der Clojure-Community, oder sollte ich einfach nicht vorfixierte Namen verwenden?

Es scheint, dass viel Code in clojure.contrib (möge es in Ruhe ruhen) normale Namen für private Funktionen verwendet, also ist das vielleicht das Beste, aber ich mag den visuellen Indikator - vielleicht ist mein C/Perl-Hintergrund einfach zu stark! ;)

Antwort

40

Es gibt keine Konvention; Der visuelle Indikator ist in Sprachen vorherrschend, in denen keine privaten Funktionen integriert sind. Da Clojures Funktionen mit defn- nicht außerhalb ihres Namensraumes sichtbar sind, gibt es keine Notwendigkeit, Funktionen mit einem Uglifier zu präfixieren;)

Also tun Sie was aber, aber Sie sollten wahrscheinlich nur tun wollen, wie der Rest der Gemeinschaft tut und Nenne sie einfach normal! Es wird dein Leben leichter machen.

+0

Sinn macht. Vielen Dank! –

23

Mir sind keine Namenskonventionen bekannt, aber Sie können das Metadaten-Tag ^:private anhängen, um private Funktionen zu definieren. Dies entspricht genau defn-, ist aber ein wenig klarer, IMHO.

(defn ^:private foo []) 
+1

Und dies für den aktuellen Namespace tun: '(def ^: private-ns- * ns *)' – nuaavee

Verwandte Themen