Convenția de numire pentru câmpurile private VB.NET

Există o convenție oficială pentru numirea câmpurilor private în VB.NET? De exemplu, dacă am o proprietate numită "Foo", eu numesc în mod normal câmpul privat "_Foo". Acest lucru pare a fi frământat în Instrucțiunile pentru Oficiali :

"Nu utilizați un prefix pentru numele câmpurilor. De exemplu, nu utilizați g_ sau s_ pentru a distinge câmpurile statice față de cele ne-statice."

În C#, puteți să apelați câmpul privat "foo", proprietatea "Foo", și să vă referiți la câmpul privat ca "this.foo" în constructor. Deoarece VB.NET este insensibil pentru litere mici, nu puteți face acest lucru - orice sugestii?

0
fr hi bn
Aceste îndrumări oficiale se referă la dezvoltarea bibliotecilor de clase și se aplică numai elementelor publice și nu celor private.
adăugat autor MarkJ, sursa

10 răspunsuri

Ghidurile oficiale sunt doar acele linii directoare. Puteți să mergeți mereu în jurul lor. Acestea fiind spuse, de obicei, prefixăm câmpuri cu un subliniere în ambele C# și VB.NET. Această convenție este destul de obișnuită (și, evident, orientările oficiale au fost ignorate).

Câmpurile private pot fi apoi menționate fără cuvântul cheie "eu" (cuvântul "acest" este pentru C# :)

0
adăugat

Sunt de acord cu @lomaxx, este mai important să fii consecvent în întreaga echipă decât să ai convenția dreapta .

Totuși, aici sunt câteva locuri bune pentru a obține idei și îndrumări pentru convențiile de codificare:

  1. Practical Guidelines and Best Practices for Microsoft Visual Basic and Visual C# Developers by Francesco Balena is a great book that addresses many of these issues.
  2. IDesign Coding Standards (for C# and for WCF)
  3. The .NET Framework Source Code (in VS2008)
0
adăugat

Încă mai folosesc prefixul _ în VB pentru   câmpuri private, așa că am eu _foo ca   domeniul privat și Foo ca   proprietate. Fac asta și pentru C# și   cam orice cod scriu.   În general, nu aș fi prea prins   în "ceea ce este modul corect de ao face"   pentru că nu există într-adevăr un "drept"   (altfel există unele foarte rău   moduri), ci mai degrabă să fie preocupat   să o faceți în mod consecvent.

Nu am găsit nimic mai bun decât "_" pentru clarificare și consecvență. Contra includ:

Mă duc în jurul liniilor, le-am dezactivat în editor și încerc să nu mă gândesc prea mult la respectarea CLS.

0
adăugat
Conformitatea CLS nu-i interesează numele de câmpuri private.
adăugat autor Jonathan Allen, sursa

Încă mai folosesc prefixul _ în VB pentru câmpuri private, așa că voi avea _foo ca câmp privat și Foo ca proprietate. Fac acest lucru și pentru C#, precum și pentru orice cod pe care îl scriu. În general, nu aș fi prea prins "în ce mod este corect", pentru că nu există într-adevăr o cale "corectă" (altfel există câteva moduri foarte rele), ci mai degrabă să fie preocupat să o faceți în mod consecvent.

La sfârșitul zilei, consistența va face codul mult mai ușor de citit și mai ușor de întreținut decât să folosiți orice set de convenții "corecte".

0
adăugat

Prefer să folosesc prefixul de subliniere pentru câmpurile private. Folosesc prima literă cu litere mici pentru parametrii metodei. Urmăm orientarea de a avea parametri minuscule de camelă pentru metode, pe care le consider mai importante decât denumirea câmpurilor private, deoarece acestea fac parte din API pentru clasă. . de exemplu.

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

Folosind acest model, nu veți avea niciun conflict de numire cu câmpul privat și parametrul dvs. constructor în C# sau VB.NET.

0
adăugat

Nu cred că există o convenție oficială de numire, dar am văzut că Microsoft utilizează m_ în dll-ul Microsoft.VisualBasic (prin reflector).

0
adăugat

Este o preferință personală, deși există un suport pe scară largă pentru distincția some . Chiar și în C# Nu cred că există o convenție pe scară largă.

Jeff Prosise says

Ca o chestiune de preferință personală, în mod obișnuit, prefixez câmpurile private cu o subliniere [în C #] ... Această convenție este folosită destul de mult în cadrul .NET, dar nu este utilizată în întregime.

Din Ghidul de proiectare a rețelei NET Ediția a II-a, pag. 73.

Jeffrey Richter says

Fac toate câmpurile mele private și prefixez câmpurile de instanță cu "m_" și câmpurile mele statice cu "s_" [în C #]

Din Ghidul de proiectare a rețelei NET Editia a II-a pagina 47. Anthony Moore ( BCL echipa ) crede, de asemenea, că folosirea "m_" și "s_" merită luate în considerare, pagina 48.

0
adăugat

Ghidul de proiectare pe care l-ați conectat specifică afirmă că se aplică numai câmpurilor statice publice și protejate. Orientările privind proiectarea se axează în principal pe proiectarea API-urilor publice; ce faceți cu membrii dvs. privați depinde de dvs. Nu sunt pozitiv, dar sunt relativ încrezător că membrii privați nu sunt luați în considerare atunci când compilatorul verifică respectarea CLS, deoarece doar membrii publici/protejați vin să joace acolo (ideea este "Ce se întâmplă dacă cineva care folosește o limbă care nu permite personajul _ să încerce să folosească biblioteca dvs. "Dacă membrii sunt privați, răspunsul este" Nimic, utilizatorul nu trebuie să folosească acești membri ", dar dacă membrii sunt publici, aveți probleme. )

Acestea fiind spuse, am să adaug în camera de ecou și să subliniez că indiferent ce faci, este important să fii consecvent. Angajatorul meu mandatează că câmpurile private din C# și VB sunt prefixate cu _, și pentru că toți dintre noi respectăm această convenție, este ușor să folosiți codul scris de altcineva.

0
adăugat

Sunt de acord că cel mai important nu este stilul pe care îl folosește, ci este consecvent.

Cu acest lucru, noul stil MS/.NET pentru câmpurile private tinde să fie _fooVar (subliniere urmată de un nume CamelCased)

0
adăugat

În VB.NET 4.0, cei mai mulți dintre voi probabil știți că nu este necesar să scrieți în mod explicit getters și setteri pentru declarațiile de proprietate după cum urmează:

Public Property Foo As String
Public Property Foo2 As String

VB creează automat variabilele de membri private numite _Foo și _Foo2. Se pare că Microsoft și echipa VS au adoptat convenția, deci nu văd o problemă cu ea.

0
adăugat