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?
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%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.