== 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[]