Nested when structures are difficult to understand because you can easily confuse the cases of an inner when as belonging
to an outer statement. Therefore nested when statements should be avoided.
Specifically, you should structure your code to avoid the need for nested when statements, but if you cannot, then consider moving the
inner when to another function.
Noncompliant code example
fun foo(n: Int, m: Int) {
when (n) {
0 ->
when (m) { // Noncompliant; nested when
// ...
}
1 -> print("1")
else -> print("2")
}
}
Compliant solution
fun foo(n: Int, m: Int) {
when (n) {
0 -> bar(m)
1 -> print("1")
else -> print("2")
}
}
fun bar(m: Int){
when(m) {
// ...
}
}