Чистый код предлагает никогда не писать такой код в первую очередь.
Если вообще, вы можете, например, создать небольшие вспомогательные методы для каждой строки, например:
private hasStateConditionXyz(boolean[][] userState) {
return userState[0][0]&&userState[0][1])&&(userState[0][2];
}
где "Xyz" будет красивым красивым именем, которое говорит читателю, каково намерение этой проверки.
Конечно, это нарушает вашу способность каким-то образом зацикливать над вашим массивом.
Другими словами:
- если возможно, посмотрите, возможно ли вычислить ваш результат, зацикливаясь на этом массиве, вместо записи таких ручных «шаблонов»
- в противном случае рассмотрите возможность использования таких именованных вспомогательных методов
Где, в конце концов, реальный ответ может состоять в том, чтобы сделать шаг назад и посмотреть на общую проблему, которую нужно решить. Значение: если у вас есть такой сложный «конечный автомат», тогда может быть лучше создать конечный автомат. Или использовать какой-то «рабочий процесс» двигателя. Такие инструменты позволяют вам выражать такие сложные (бизнес?) Правила гораздо более краткими и удобочитаемыми способами.