Это очень хороший вопрос!
Для длинных условий можно и нужно использовать такую замечательную практику, как
именованные условия!
В большинстве случаев, когда условия не зависят друг от друга, можно просто присвоить результат вычисления условия переменной с обязательно говорящим именем, и дальше уже использовать эти переменные:
$dateIsValid = $obj->getDate() >= getCurrentDate();
$balanceOk = $obj->getBalance() > 0;
// Любые другие условия
if ($dateIsValid && $balanceOK) ...
Это повышает читабельность не только сокращая само тело условного оператора, но в первую очередь превращая его в связный текст!
Если же условия зависят друг от друга, то можно оформлять их в виде функций (методов). И тогда они не будут выполнены, если до них не дойдет очередь.