Zum Beispiel in Objective-C, wo Klassenerweiterungen ein direktes Sprachkonstrukt sind, machen wir:
im Feld namens NSArray + FKBinarySearch.h :
%Vor%Benennen Sie Ihre Erweiterungsklassen wie folgt:
%Vor% Scalaz-Aufrufe machen zum Beispiel Erweiterungsklassen mit dem Suffix Ops
: BooleanOps oder sogar ihre eigenen Eigenschaften erweitern FoldableOps
Aber Ops
fühlt sich zu allgemein an, OTOH gibt es Pakete. Auch Ops
in scalaz Fall enthält alles.
Nein, es gibt keine wirklich etablierte Konvention. @ srgfed01 listet einige Ansätze auf (andere Konventionen, die ich gesehen habe: implizite Konvertierungen für X
in einem Objekt mit dem Namen ImplicitX
anstatt Implicits
und PimpedX
für die implizite Klasse, die X
umschließt), Aber Sie werden all diese und mehr in vorhandenen Scala-Bibliotheken sehen - manchmal mehrere verschiedene Konventionen in derselben Bibliothek. Nichts ist so gut etabliert wie der x2y
Stil für implizite Konvertierungen , vielleicht weil implizite Klassen ein relativ neues Feature sind.
Wählen Sie also einen Stil aus, den Sie mögen, und seien Sie darauf vorbereitet, in den von Ihnen verwendeten Bibliotheken nach vielen Konventionen zu suchen.
In Programmierung in Scala in "Kapitel 21 · Implizite Konvertierungen und Parameter" - & gt; "Benennung einer impliziten Konvertierung." es wird gesagt:
Implizite Konvertierungen können beliebige Namen haben. Der Name eines Impliziten Umrechnung spielt nur in zwei Situationen eine Rolle: wenn Sie es schreiben wollen explizit in einer Methodenanwendung und um zu bestimmen, welche implizit Konvertierungen sind an jeder Stelle im Programm verfügbar.
In Scala programmieren "Kapitel 5: Implicits" - & gt; "Wise Use of Implicits" heißt es:
Eine Möglichkeit, die Sichtbarkeit zu verbessern, besteht darin, die Praxis von Setzen von impliziten Werten in ein spezielles Paket namens implicits oder an Objekt namens Implicits.
Die implizite Klasse ist wie die implizite Methode, aber im Falle der Klasse ist ihr primärer Konstruktor beteiligt. Und wenn Sie Scala implizite Konvertierungsmethoden betrachten, können Sie etwas finden wie:
- wrapString (s: String): WrappedString
- genericArrayOps [T] (xs: Array [T]): ArrayOps [T]
Meiner Meinung nach kann innerhalb Implicits
object für Ihren impliziten Klassennamen folgendes verwendet werden:
- xOps
- RichX
- WrappedX
- AsX
Sie können einen beliebigen auswählen, der Ihren Projektbedingungen entspricht.
Die Standardbibliothek hat StringOps
.
Jemand auf der Mailing-Liste hat mich zu "absurd deskriptiven Backquoted Identifiern" gedrängt, die vermeiden, Kollisionen zwischen Implicits zu benennen.
OTOH, vielleicht möchten Sie es einem Kunden leicht machen, das implizite durch Abschatten auszuschalten.
Tags und Links scala