:identifier_capital_plural: Local variables
:identifier: local variable
:identifier_plural: local variables
:identifier_or: local variable
:regex: ^[a-z][a-z0-9]*([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$

include::../rule.adoc[]

=== Code examples

==== Noncompliant code example

With the default regular expression ``{regex}``, bringing the following constraints:

* Camel casing, starting with a lowercase character, for example backColor
* Short abbreviations of 2 letters can be capitalized only when not at the beginning, for example id, productID
* Longer abbreviations need to be lowercased, for example html

[source,vbnet,diff-id=1,diff-type=noncompliant]
----
Module Module1
    Sub Main()
        Dim Foo = 0 ' Noncompliant
    End Sub
End Module
----

==== Compliant solution

[source,vbnet,diff-id=1,diff-type=compliant]
----
Module Module1
    Sub Main()
        Dim foo = 0 ' Compliant
    End Sub
End Module
----

== Resources

=== Documentation

* Microsoft Learn - https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/program-structure/naming-conventions[Visual Basic Naming Conventions]
* Wikipedia - https://en.wikipedia.org/wiki/Naming_convention_(programming)[Naming Convention (programming)]

=== Related rules

* S101 - Class names should comply with a naming convention
* S114 - Interface names should comply with a naming convention
* S119 - Generic type parameter names should comply with a naming convention
* S1542 - Functions and procedures should comply with a naming convention
* S1654 - Method parameters should follow a naming convention
* S2304 - Namespace names should comply with a naming convention
* S2342 - Enumeration types should comply with a naming convention
* S2343 - Enumeration values should comply with a naming convention
* S2347 - Event handlers should comply with a naming convention
* S2348 - Events should comply with a naming convention
* S2362 - Private constants should comply with a naming convention
* S2363 - "Private Shared ReadOnly" fields should comply with a naming convention
* S2364 - "Private" fields should comply with a naming convention
* S2366 - Properties should comply with a naming convention
* S2367 - Non-private constants should comply with a naming convention
* S2369 - Non-private fields should comply with a naming convention
* S2370 - Non-private "Shared ReadOnly" fields should comply with a naming convention

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

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

include::../message.adoc[]

include::../parameters.adoc[]

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

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

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