Objective-C: Verwenden von _ (Unterstriche) beim Benennen von Variablen [duplizieren]

7

In Objective-C-Buch, das ich lese, und in einigen Code, den ich gesehen habe, fügen Leute manchmal Unterstriche zu den Variablennamen hinzu.

Obwohl mir klar ist, dass dies auf eine etablierte Konvention zurückzuführen ist, frage ich mich:

Gibt es eine Bedeutung, ob der Unterstrich dem Variablennamen vorangestellt oder abgeschlossen ist? Nehmen wir zum Beispiel _name, name and name_ Als Objective-C-Programmierer, was, wenn überhaupt, bedeutet Unterstreichung für Sie?

    
JAM 30.07.2011, 21:44
quelle

5 Antworten

17

Dies ist weitgehend auf persönlichen Stil und defensive Programmierung zurückzuführen. Aber hier ist der Hauptgrund, warum ich persönlich benutze und gesehen habe, wie Leute das Präfix verwenden.

Es geht darum, Ihre Absicht deutlicher zu machen, ob Sie direkt auf den ivar zugreifen oder den Getter / Setter verwenden.

Wenn ich:

%Vor%

und:

%Vor%

Damit werden die Getter / Setter-Deklarationen wie folgt kompiliert und erzeugt:

%Vor%

Um nun direkt auf den Ivar zugreifen zu können, muss ich folgendes verwenden:

%Vor%

Um den Getter / Setter zu verwenden, kann ich die Punktnotation oder den Getter / Setter wie folgt verwenden:

%Vor%

Jetzt in meinem Code, wenn ich aus Versehen nur eintippe:

%Vor%

es wird nicht kompiliert, weil ich den Getter / Setter nicht benutze und es keinen Ivar namens people gibt, sollte es _people sein.

    
Paul.s 30.07.2011, 23:07
quelle
5

Ein einzelner führender Unterstrich ist eine Apple-interne Codierungskonvention, und sie tun es, damit ihre Symbole nicht mit Ihren kollidieren. Unglücklicherweise war Apple bei der Veröffentlichung von Codebeispielen, die dieser Gewohnheit folgen, schlampig, so dass viele Leute außerhalb von Apple die Idee bekommen haben, dass es eine gute Sache ist.

Wenn Sie für Ihre Ivar- und Methodennamen ein Präfix verwenden möchten, verwenden Sie alles außer einem einzigen führenden Unterstrich.

    
NSResponder 31.07.2011 02:10
quelle
3

Wenn Sie solche Variablennamen verwenden, sollten Sie definitiv keine verwenden, die mit einem Unterstrich gefolgt von einem Großbuchstaben beginnen. Die C-Norm reserviert alle solche Identifikatoren für jede Verwendung (§ 7.1.3):

  

Alle Bezeichner, die mit einem Unterstrich und einem Großbuchstaben oder einem anderen Unterstrich beginnen, sind immer für die Verwendung reserviert.

, d. h. eine zukünftige Version der C-Sprache (oder eines gegebenen Compilers) kann einen solchen Identifizierer als Schlüsselwort oder Bibliotheksfunktionsname verwenden, was Ihr Programm beschädigen kann. Angesichts dessen bevorzuge ich es, einfach keine Namen zu verwenden, denen ein Unterstrich vorangestellt ist. Sie wissen vielleicht, dass Sie nach dem Unterstrich keine Großbuchstaben verwenden dürfen, aber das hindert den neuen Typ nicht daran, mitzukommen und es zu tun.

Außerdem sind alle Bezeichner, die mit einem Unterstrich beginnen, im Dateibereich reserviert. ein weiteres Problem, vor dem man sich hüten sollte.

    
Stephen Canon 31.07.2011 01:08
quelle
1

Unterstreichen bedeutet nicht wirklich etwas, aber wenn Sie sie verwenden, ist es schwieriger, Fehler wie dieses , aber ich habe noch nie jemanden gesehen, der am Ende nur am Anfang Unterstriche verwendet hat, und würde Ihnen raten, am Ende zu addieren, da es unklar sein könnte was diese Dinge bedeuten.

Ich füge meinem Objective-C-Code keine Unterstriche hinzu, aber es ist meistens eine Frage des Geschmacks und nicht der Bedeutung. Stellen Sie sicher, dass Sie keine Unterstriche in der Mitte oder am Ende der Namen hinzufügen:)

    
Maurício Linhares 30.07.2011 21:50
quelle
1

Unterstreichung bedeutet privat, ich benutze es nicht selbst, da Sie immer @private verwenden können und Sie können ivar zur Schnittstellenerweiterung in der .m-Datei oder sogar dem @implementaion-Abschnitt Ihres Codes hinzufügen ist vor kurzem mit dem Aufkommen von Eigenschaften üblich geworden, also können Sie es benutzen, um sich Form versehentlich geschützt zu schützen, indem es auf einen ivar im Code anstelle der Eigenschaft zugreift, da der Compiler Ihnen den Fehler mitteilen kann, in der c-Programmierung benutze ich die führende unter Punktzahl um zu zeigen, dass eine Funktion nicht eigenständig ist, wird sie von einer anderen Funktion benutzt und wird sie auch in C ++ von ivar verwenden, da C ++ keine Memberfunktionen und Ivars denselben Namen haben.

    
Nathan Day 30.07.2011 21:52
quelle