65 lines
1.5 KiB
Plaintext
65 lines
1.5 KiB
Plaintext
Nested ``++Select Case++`` structures are difficult to understand because you can easily confuse the cases of an inner ``++Select Case++`` as belonging to an outer statement. Therefore nested ``++Select Case++`` statements should be avoided.
|
|
|
|
|
|
Specifically, you should structure your code to avoid the need for nested ``++Select Case++`` statements, but if you cannot, then consider moving the inner ``++Select Case++`` to another function.
|
|
|
|
== Noncompliant Code Example
|
|
|
|
[source,vbnet]
|
|
----
|
|
Public Sub Foo(A As Integer, B As Integer)
|
|
Select Case A
|
|
Case 0
|
|
' ...
|
|
Case 1
|
|
Select Case B ' Noncompliant; nested Select Case
|
|
Case 2
|
|
' ...
|
|
Case 3
|
|
' ...
|
|
Case 4
|
|
' ...
|
|
Case Else
|
|
' ...
|
|
End Select
|
|
Case 2
|
|
' ...
|
|
Case Else
|
|
' ...
|
|
End Select
|
|
End Sub
|
|
----
|
|
|
|
== Compliant Solution
|
|
|
|
[source,vbnet]
|
|
----
|
|
Public Sub Foo(A As Integer, B As Integer)
|
|
Select Case A
|
|
Case 0
|
|
' ...
|
|
Case 1
|
|
HandleB(B)
|
|
Case 2
|
|
' ...
|
|
Case Else
|
|
' ...
|
|
End Select
|
|
End Sub
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|