== Why is this an issue?

Shared naming conventions allow teams to collaborate efficiently. This rule checks that all subroutine and function names match a provided regular expression.


The default configuration is the one recommended by Microsoft:

* Pascal casing, starting with an upper case character, e.g. BackColor
* Short abbreviations of 2 letters can be capitalized, e.g. GetID
* Longer abbreviations need to be lower cased, e.g. GetHtml
* Event handlers with a handles clause and two-parameter methods with ``++EventArgs++`` second parameter are not covered by this rule.

=== Noncompliant code example

With the default regular expression ``++^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$++``

[source,vbnet]
----
Module Module1
  Sub bad_subroutine()                      ' Noncompliant
  End Sub

  Public Function Bad_Function() As Integer ' Noncompliant
    Return 42
  End Function
End Module
----

=== Compliant solution

[source,vbnet]
----
Module Module1
  Sub GoodSubroutine()                      ' Compliant
  End Sub

  Public Function GoodFunction() As Integer ' Compliant
    Return 42
  End Function
End Module
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

=== Parameters

.regexp
****
_STRING_

----
^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
----

Regular expression used to check the function names against
****


'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
