Исходный код
isRegKeyRequired = distKey == null ? false : distKey.equals("yes") ? true : false;Что не так в исходном коде
Всегда нужно помнить, что логические операции сравнения уже сами по себе дают результат в виде true или false. Поэтому не следует устраивать ветвление только для того, чтобы явно указать, что результатом будет true или false — нужно использовать само логическое выражение без ветвления.
Примеры рефакторинга исходного кода
Чуть-чуть поменяв проверку distKey и убрав ненужное ветвление, получаем:
isRegKeyRequired = distKey != null && distKey.equals("yes");Этот приём основан на свойстве оператора &&: правая часть не будет вычисляться, если левая часть ложная, потому что в целом результат логического И ложный, если хотя бы один операнд ложный, проверять второй операнд нет смысла.
Количество проверок можно ещё больше сократить:
isRegKeyRequired = "yes".equals(distKey);Теперь проверкой наличия значения в distKey будет заниматься метод equals.