.NET Naming Conventions – VB.NET version
Not so long ago a colleague of mine, Josh Twist, did a post on .NET naming conventions using C# code to serve as an example. These are based on the .NET naming guidelines published on MSDN. Well, I happen to be doing a code review right now, but it’s in VB.NET. So I thought I’d do a VB.NET version and post it here for everyone’s reference. I’m sure that Eric Nelson will be very happy!
Option Explicit On
Option Strict On
Imports System
' Namespaces are PascalCased
Namespace Example.NamingConventions
' Class names are PascalCased
Public Class ExampleClass
' All public fields, including constants are PascalCased
Public Const PiAsAString As String = "3.14"
' All private fields are camelCased with an underscore prefix
Private ReadOnly _privateMember As String
' All protected members are PascalCased
Protected ProtectedField As Integer = 12
' All friend members are PascalCased
Friend InternalField As Integer = 13
' All private methods are PascalCased
' *** NOTE - All parameters are camelCased
Private Function Multiply(ByVal valueA As Double, ByVal valueB As Double) As Double
' local variables (scoped within a method) are camelCased (no underscore)
Dim result As Double = valueA * valueB
Return result
End Function
' All private Properties are PascalCased
' *** NOTE - Acronyms of 2 characters are UPPERCASED (e.g. UI, IO)
Private ReadOnly Property UIElementName() As String
Get
Throw New NotImplementedException()
End Get
End Property
' All (public and private) properties are PascalCased
' *** NOTE - Acronyms longer than 2 characters are PascalCased (e.g. Html, Xml)
Public Property HtmlLength() As Integer
Get
Throw New NotImplementedException()
End Get
Set(ByVal value As Integer)
Throw New NotImplementedException()
End Set
End Property
' All public methods are PascalCased
' *** NOTE - All parameters are camelCased
' *** NOTE - Abbreviations are not treated as Acronyms (so "Id" is Id, not ID).
Public Sub AlignObjectById(ByVal id As String, ByVal alignment As Alignment)
Throw New NotImplementedException()
End Sub
' Nested classes are PascalCased, even private ones
Private Class NestedClass
Implements IDisposable
Public Sub Dispose() Implements IDisposable.Dispose
Throw New NotImplementedException()
End Sub
End Class
End Class
' Enums are PascalCased and not plural (unless marked with <Flags> in which case the name should be plural)
Public Enum Alignment
' Enum members are PascalCased
Top
Bottom
Left
Right
End Enum
End Namespace
Originally posted by Rupert Benbrook on 30 January 2010 here.