2008-08-11 28 views
21

Gibt es eine offizielle Konvention für die Benennung privater Felder in VB.NET? Zum Beispiel, wenn ich eine Eigenschaft namens 'Foo' habe, rufe ich normalerweise das private Feld '_Foo' an. Dies scheint in der Offical Guidelines:Namenskonvention für VB.NET private Felder

verpönt. "Verwenden Sie kein Präfix für Feldnamen. Verwenden Sie z. B. nicht g_ oder s_ zur Unterscheidung zwischen statischen und nicht statischen Feldern."

In C# könnten Sie das private Feld 'foo', die Eigenschaft 'Foo' aufrufen und im Konstruktor auf das private Feld als 'this.foo' verweisen. Da VB.NET nicht zwischen Groß- und Kleinschreibung unterscheidet, können Sie das nicht tun - irgendwelche Vorschläge?

+3

Diese offiziellen Richtlinien dienen der Entwicklung von Klassenbibliotheken und gelten nur für ** öffentliche ** Elemente, nicht für private. – MarkJ

Antwort

20

Ich verwende immer noch das _ Präfix in VB für private Felder, also werde ich _foo als privates Feld und Foo als Eigenschaft haben. Ich mache das auch für C# und so ziemlich jeden Code, den ich schreibe. Im Allgemeinen würde ich nicht zu sehr in "was ist der richtige Weg" geraten, denn es gibt nicht wirklich einen "richtigen" Weg (obwohl es auch sehr schlechte Wege gibt), sondern eher darum, es konsequent zu machen.

Am Ende des Tages macht Konsistenz Ihren Code viel lesbarer und wartbarer als die Verwendung von "richtigen" Konventionen.

3

Offizielle Richtlinien sind nur das - Richtlinien. Sie können immer um sie herum gehen. Davon abgesehen werden Felder normalerweise mit einem Unterstrich in sowohl C# als auch VB.NET vorangestellt. Diese Konvention ist ziemlich üblich (und natürlich werden die offiziellen Richtlinien ignoriert).

Privat Felder können dann ohne „me“ Schlüsselwort referenziert werden (die „this“ Schlüsselwort für C# :) ist

2

Ich glaube nicht, gibt es eine offizielle Namenskonvention, aber ich habe gesehen, dass Microsoft Verwenden Sie m_ in der Microsoft.VisualBasic-DLL (über Reflektor).

0

Ich stimme @lomaxx zu, es ist wichtiger, im ganzen Team einheitlich zu sein als die richtige Konvention.

Dennoch, hier sind einige gute Plätze Ideen und Anleitungen für die Codierung Konventionen zu erhalten:

  1. Practical Guidelines and Best Practices for Microsoft Visual Basic and Visual C# Entwickler von Francesco Balena ist ein großes Buch, das viele dieser Fragen behandelt werden.
  2. IDesign Coding Standards (für C# und für WCF)
  3. .NET Framework Source Code (in VS2008)
0

Ich ziehe den Unterstrich Präfix für private Felder zu verwenden. Ich verwende einen Kleinbuchstaben für die Methodenparameter. Ich folge der Richtlinie, kleine Camelcase-Parameter für Methoden zu haben, was meiner Meinung nach wichtiger ist als die Benennung von privaten Feldern, da es Teil der API für die Klasse ist. . z.B.

Public Class Class1 

    Private _foo As String 
    Public Property Foo() As String 
     Get 
      Return _foo 
     End Get 
     Set(ByVal value As String) 
      _foo = value 
     End Set 
    End Property 

    Public Sub New(ByVal foo As String) 
     _foo = foo 
    End Sub 

End Class 

dieses Muster verwenden, werden Sie nicht mit dem privaten Bereich und Ihre Konstruktorparameter in C# oder VB.NET alle Namenskonflikte haben.

2

Ich benutze immer noch den _ Präfix in VB für private Felder, also werde ich _foo als den privaten Bereich und Foo als Eigenschaft. Ich mache das auch für C# und so ziemlich jeden Code, den ich schreibe. Im Allgemeinen würde ich nicht zu in "was ist der richtige Weg, es zu tun" zu bekommen, weil es nicht wirklich ein "richtiges" Weg gibt (altho gibt es einige sehr schlechte Möglichkeiten), sondern eher mit betroffen sein tun es konsequent.

Ich habe nichts besseres als das "_" für Klarheit und Konsistenz gefunden. Nachteile sind:

  • Not CLS compliant
  • Neigt verloren zu gehen, wenn VB horizontale Linien über meine IDE

ich um die Linien bekommen zieht von denen aus im Editor drehen und versuchen, nicht zu denken viel über die CLS-Compliance.

+6

Die CLS-Konformität interessiert sich nicht für private Feldnamen. –

3

Die Entwurfsrichtlinien, die Sie speziell verknüpft haben, geben an, dass sie nur für statische öffentliche und geschützte Felder gelten. Die Designrichtlinien konzentrieren sich hauptsächlich auf die Gestaltung öffentlicher APIs. Was du mit deinen privaten Mitgliedern machst, bleibt dir überlassen. Ich bin nicht zuversichtlich, aber ich bin relativ zuversichtlich, dass private Mitglieder nicht berücksichtigt werden, wenn der Compiler CLS-Konformität überprüft, weil nur öffentliche/geschützte Mitglieder kommen, um dort zu spielen (die Idee ist, "Was ist, wenn jemand eine Sprache verwendet, die erlaubt das _ Zeichen nicht, Ihre Bibliothek zu benutzen? "Wenn die Mitglieder privat sind, ist die Antwort" Nichts, der Benutzer muss diese Mitglieder nicht benutzen. "aber wenn die Mitglieder öffentlich sind, sind Sie in Schwierigkeiten.)

Das gesagt, ich werde hinzufügen, um die Echokammer und darauf hinweisen, dass, was auch immer Sie tun, ist es wichtig, konsequent zu sein. Mein Arbeitgeber schreibt vor, dass private Felder in C# und VB mit _ vorangestellt werden, und da wir alle dieser Konvention folgen, ist es einfach, Code zu verwenden, der von jemand anderem geschrieben wurde.

0

Ich stimme zu, ist am wichtigsten, nicht, welchen Stil man verwendet, aber es ist konsistent.

Mit gesagt, dass das neue MS/.NET-Styling für die privaten Felder neigt _fooVar zu sein (durch einen Namen camelcase gefolgt Strich)

5

Es ist persönliche Präferenz, obwohl es eine breite Unterstützung für mit einig Unterscheidung. Selbst in C# glaube ich nicht, dass es eine weit verbreitete Konvention gibt.

Jeff Prosise sagt

Als eine Frage der persönlichen Präferenz ich in der Regel Präfix private Felder mit einem Unterstrich [in C#] ... Diese Konvention ziemlich viel in dem .NET-Framework verwendet wird, aber es wird nicht verwendet während.

Von der. NET Framework Design Guidelines 2nd Edition Seite 73.

Jeffrey Richter sagt

Ich mache all meine Felder privat und ich Präfix meine Instanzfelder mit "m_" und meinen statischen Feldern mit "s_" [C#]

Von der. NET Framework Design Guidelines 2. Ausgabe Seite 47. Anthony Moore (BCL team) denkt auch, dass die Verwendung von "m_" und "s_" eine Überlegung wert ist, Seite 48.

2

In VB.NET 4.0, die meisten von Ihnen wahrscheinlich wissen Sie nicht explizit müssen Getter und Setter für Ihre Property Erklärungen wie folgt schreiben:

Public Property Foo As String 
Public Property Foo2 As String 

VB erstellt automatisch privaten Membervariablen genannt _foo und _Foo2. Es scheint, als ob Microsoft und das VS-Team die _ Konvention angenommen haben, also sehe ich kein Problem damit.