Когда у меня есть следующий код с 2 уровнями троичных операций
double amount = isValid ? (isTypeA ? vo.getTypeA() : vo.getTypeB()) : 0;
Какой сонар предупреждает о
Ternary operators should not be nested (squid:S3358)
То, что вы можете сделать что-то, вовсе не означает, что вы должны это делать, и это относится к вложенным троичным операциям. Вложенные троичные операторы приводят к виду кода, который может казаться четким, как день, когда вы пишете его, но через шесть месяцев сопровождающие (или, что еще хуже - будущие вы) будут чесать свои головы и ругаться.
Вместо этого сделайте ошибку на стороне ясности и используйте другую строку, чтобы выразить вложенную операцию как отдельный оператор.
Мой коллега предположил, что такой уровень можно принять, и он более понятен, чем альтернатива.
Интересно, можно ли настроить это правило (или другие) для ограничения допустимых уровней?
Если нет, то почему сонар так строг, когда он имеет дело с соглашениями о коде?
Я не хочу игнорировать правило , просто настроить, чтобы разрешить до 2 уровней вместо 1.