Wie benenne ich iOS-Elemente im Code?

8

Ich habe in letzter Zeit viele iPhone-Entwicklungen gemacht, und ich habe ein Problem mit dem Namen, für das ich mir keine gute Lösung vorstellen kann. Das Problem ist, dass ich manchmal auf "iOS" in Variablen, Namespaces oder Klassennamen verweisen muss. Wie soll ich das machen? Angenommen, ich habe eine Version von "MyClass", die für iOS entwickelt wurde. Soll ich es nennen:

iOSMyClass?

Das ist schlecht. Klassennamen sollen mit einem Großbuchstaben beginnen.

IOSMyClass?

Das ist schlecht. Jetzt sieht meine Klasse wie eine Schnittstelle aus.

AppleMyClass?

Das ist besser, aber was, wenn ich eine Version der Klasse für Macs erstelle?

AppleMobileMyClass?

Das ist besser, aber es wird ziemlich ausführlich.

Irgendwelche Gedanken? Ich entwickle Desktop-Software mit C #.

    
Peter Ruderman 25.03.2011, 15:28
quelle

2 Antworten

7

Schlage mit deiner zweiten Wahl vor, aber ein kleiner Mod: IosMyClass . Betrachten Sie die Konvention, dass 3-Buchstaben-Akronyme Pascal sind (dh MVC in System.Web.Mvc ). Natürlich dreht Apple das in seiner Umsetzung mit iOS um. Es klingt jedoch so, als ob dies für den .NET-Bereich ist, und der Wunsch ist, seinen Konventionen zu folgen.

Es gibt viele andere Klassen ( in .NET Framework sogar ), die mit dem Buchstaben I beginnen. Zugegeben, es ist nicht ideal, da es der Konvention, Schnittstellen mit I voranzutreiben, so nahe kommt. Schnittstellen beginnen jedoch mit zwei Großbuchstaben (I [A-Z]). Das identifiziert sie als Schnittstelle. Daher ist IosMyClass per Konvention keine Schnittstelle, aber IIosFoo wäre.

    
p.campbell 25.03.2011, 15:32
quelle
4

Ich weiß, dass Sie C # als Ihre Sprache hier angeben, aber ich dachte, ich sollte auf die standardmäßigen Objective-C-Namenskonventionen hinweisen, die Sie sehen, wenn Sie sich anderen iOS-Code ansehen.

Objective-C fehlt das Konzept der Namespaces, daher ist es allgemein empfohlen , dass Sie Ihren Klassennamen 2-3 Großbuchstaben voranstellen, die Ihre Firma oder Ihr Framework kennzeichnen, um Namenskollisionen zu vermeiden. Apple hat in letzter Zeit 3 ​​Zeichen empfohlen, da Frameworks wie Core Plot, die 2 Buchstaben verwenden, mit Kollisionen mit privaten Klassen in Apples Frameworks (wie CPImage in diesem Fall) begonnen haben. Weitere Informationen zu den Benennungsrichtlinien finden Sie hier .

Aus diesem Grund würde ich die Verwendung eines generischen iOS Präfixes empfehlen, weil Apple das intern für etwas verwenden und Ihre Anwendung zum Brechen bringen könnte. Zugegeben, ich weiß nicht, wie MonoTouch C # -Klassen mit den Cocoa-Framework-Klassen interagieren, aber ich möchte die Möglichkeit eines solchen Problems vermeiden.

Auch wenn ich auf das Core Plot-Framework verweisen kann, gibt es innerhalb dieses Frameworks Code, der spezifisch für Mac und einige für iOS ist, aber separate Klassen werden nicht für jede Plattform verwendet. Plattformspezifische Methoden werden aus den Hauptklassendateien extrahiert und in Kategorien platziert. Diese Kategorien haben denselben Namen, aber das Mac-Ziel kompiliert mit einer Datei und das iOS-Ziel verwendet ein anderes. In ähnlicher Weise erhalten ganze Klassen, die für jede Plattform spezifisch sind, den gleichen Namen und die gleiche Schnittstelle, werden jedoch in andere Dateien eingefügt. Welche Datei bei der Kompilierung verwendet wird, wird durch das Plattformziel bestimmt.

Daher würde ich empfehlen, iOS-spezifischen Klassen keinen eindeutigen Namen zu geben, es sei denn, sie haben kein Analogon auf Ihren anderen Zielplattformen.

    
Brad Larson 25.03.2011 20:11
quelle