Если у вас есть несколько проверок подряд и вам не нужно сохранять короткое замыкание, вы можете попробовать что-то вроде этого:
bool isValid = true;
isValid &= Condition1;
isValid &= Condition2;
isValid &= Condition3;
if (!isValid)
return false;
Если вам нужно сохранить короткое замыкание, вы можете объединить условия в большой оператор if. Однако если условий много, я бы предпочел исходный код с множественными возвратами, так как одно большое «если» могло бы стать немного уродливым.
Обратите внимание, что в последнем случае вы просто отступаете от метрики, поскольку логическое ветвление на самом деле одно и то же. Если проверки условий не имеют побочных эффектов (и я действительно надеюсь, что их нет), то я считаю, что высокая цикломатическая сложность является ложной тревогой, поскольку множественные возвраты - это просто более читаемый способ выражения сложной логической логики проверки. 1006 *
Однако это верно только в том случае, если все условия последовательно. Если они распределены по всему коду, и между проверками происходит значимая обработка, тогда метрика указывает на реальную сложность (необходимо проверить больше ветвей). В этом случае вы можете подумать, можно ли логически разбить метод на более мелкие, индивидуально тестируемые части.