rspec/rules/S3087/rule.adoc

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)
}
----