
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
50 lines
1.2 KiB
Plaintext
50 lines
1.2 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Nested ``++if++``, ``++for++``, ``++for in++``, ``++while++``, ``++do while++`` and ``++switch++`` statements are a key ingredient for making what's known as "Spaghetti code".
|
|
|
|
Such code is hard to read, refactor and therefore maintain.
|
|
|
|
=== Noncompliant code example
|
|
|
|
With the default threshold of 3:
|
|
|
|
[source,swift]
|
|
----
|
|
if condition1 { // Compliant - depth = 1
|
|
/* ... */
|
|
if condition2 { // Compliant - depth = 2
|
|
/* ... */
|
|
for var i = 0; i < 10; i++ { // Compliant - depth = 3, not exceeding the limit
|
|
/* ... */
|
|
if condition4 { // Non-Compliant - depth = 4
|
|
if condition5 { // Depth = 5, exceeding the limit, but issues are only reported on depth = 4
|
|
/* ... */
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Refactor this code to not nest more than {} "if", "for", "for in", "while", "do while" and "switch" statements.
|
|
|
|
|
|
include::../parameters.adoc[]
|
|
|
|
include::../highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|