41 lines
683 B
Plaintext
41 lines
683 B
Plaintext
== Why is this an issue?
|
|
|
|
The point of using closure expressions is to clearly express a succinct bit of logic. Start nesting closure expressions too deeply and you create a logic snarl that will likely snare both you and future maintainers.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
With the maximum depth of 2:
|
|
|
|
[source,text]
|
|
----
|
|
foo(42) { (x: Int) in
|
|
bar(x) { (x: Int) in
|
|
foobar(x) { // Noncompliant
|
|
print(x * 42)
|
|
}
|
|
print(x + 42)
|
|
}
|
|
print(x - 42)
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,text]
|
|
----
|
|
func multPlus(x:Int) {
|
|
foobar(x) {
|
|
print(x * 42)
|
|
}
|
|
print(x + 42)
|
|
}
|
|
|
|
foo(42) { (x: Int) in
|
|
bar(x, multPlus)
|
|
print(x - 42)
|
|
}
|
|
----
|
|
|