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.
fun foo(n: Int, m: Int) {
when (n) {
0 ->
when (m) { // Noncompliant; nested when
// ...
}
1 -> print("1")
else -> print("2")
}
}
fun foo(n: Int, m: Int) {
when (n) {
0 -> bar(m)
1 -> print("1")
else -> print("2")
}
}
fun bar(m: Int){
when(m) {
// ...
}
}