Учитывая мои барабанщики, я бы избегал долгих испытаний, в первую очередь. Я бы предпочел сделать что-то вроде:
bool fTest1 = A == B ;
bool fTest2 = C ;
bool fTest3 = f(1,2,3) ;
bool fSuccess = ( fTest1 | ftest2 ) & fTest3 ;
if ( fSuccess )
...
Иначе как то так:
if ( A == B
&& ( C == D
|| E == F
)
&& Z > Y
) {
...
}
else
{
...
}
YMMV, конечно.
Первый намного легче отлаживать, тестировать, регистрировать и т. Д.