warum clojure-Bibliotheken versuchen, eindeutige Namen für allgemeine Funktionsnamen zu verwenden

8

Warum verwenden Clojure-Bibliotheken häufig vorkommende Funktionsnamen, die Sie dazu zwingen? Namespace qualifizieren sie? Zum Beispiel verwendet clojure.zip next, replace und remove welche bereits in clojure core existieren und "replace" existiert bereits in clojure.string.

Jetzt wird der Entwickler wahrscheinlich eine Abkürzung für den Clojure.zip-Namespace verwenden In einem Entwicklercode wird der clojure.zip / next also als z / next im Code einer anderen Person als w / next usw. qualifiziert. Dies wird dich zwingen, zurückzuschauen, um zu sehen was das Namensraumabkürzungszeichen tatsächlich ist, weil der Entwickler eine eigene Bibliothek erstellt haben könnte, die auch die Funktion "next" verwendet

Warum nicht zip-next, zip-replace und zip-remove, str-replace? Oder so ähnlich

Dann wird es eine konsistente "Namespace-Qualifizierung" im Personencode geben und es wird klar sein, worauf sich diese Funktionen beziehen.

Es ist nicht so, dass es Hunderte von Namenskonflikten zwischen Bibliotheken gibt. Normalerweise sehe ich nur zwei oder drei. Ist es so schwer, diese Namen explizit für die Bibliothek zu machen?

    
Afdfa Afsdfadsf 14.06.2012, 17:03
quelle

2 Antworten

20

Im Allgemeinen ist das Verwenden von use zum Einschließen von Bibliotheken weniger populär als das Verwenden von require in normalem Clojure-Code, daher ist die Verwendung längerer eindeutiger Namen weniger nützlich, wenn der Namespace bereits den selbe Bedeutung clojure Programmierer neigen eher dazu, die Kürze der Eindeutigkeit vorzuziehen.

anstelle von:

%Vor%

Menschen könnten dann schreiben:

%Vor%

was die Liba albern macht, also:

%Vor%     
Arthur Ulfeldt 14.06.2012 18:02
quelle
9

Wenn Sie verlangen, dass Namen global eindeutig sind, warum haben Sie überhaupt Namespaces? Wenn ich die Eiscremebibliothek definiere und jeden Funktionsnamen mit Icecream voranstelle, kann niemand Konflikte verursachen.

Aber das ist für beide Seiten furchtbar unbequem - wir müssen immer wieder dieses dumme Präfix eingeben. Wenn ich anstelle von Icecream-Scoop einfach meinen Funktions-Scoop im Namespace-Icecream benenne, hast du die Wahl, wie du darauf Bezug nehmen kannst: Du kannst es Scoop nennen, wenn es aus dem Kontext herausragt und nicht mit deinem Namespace oder Icecream kollidiert. Schaufel, oder Dessert / Schaufel, was auch immer Sie brauchen, damit es gut lesen.

    
amalloy 14.06.2012 18:59
quelle

Tags und Links