Вы спрашиваете три вещи;вы запрашиваете код, который
- короче
- более эффективен
- очиститель
У меня есть альтернатива для вас:
if ((lengthA & lengthB & lengthC) != 0)
Это правильно - он делает то же самое, что и ваш старый код (он использует поразрядно-и)
- это короче .
- потенциально более эффективно , но может подтвердить только хороший микробенчмарк. Даже если это так, это не должно вас направлять. В связи с пунктом 3 его следует учитывать только в том случае, если он обнаруживается как узкое место в вашем приложении с использованием инструмента анализа производительности, что весьма и весьма маловероятно.
- однако это не очиститель . И под этим я подразумеваю, что это сделает ваш код труднее для чтения и понимания, и любому, кто поддерживает ваш код, теперь придется задуматься о битовых манипуляциях.
Скорее всего, то же самое пойдет для любой предложенной альтернативы. .
То, что вы делали в исходном коде, достаточно хорошо;это то, что люди понимают, и, скорее всего, это самый чистый код, который вы можете написать для этой цели.