if ( (condition_A)
&& (condition_B)
&& (condition_C)
&& (condition_D)
&& (condition_E)
&& (condition_F)
)
{
...
}
в отличие от
if (condition_A) {
if (condition_B) {
if (condition_C) {
if (condition_D) {
if (condition_E) {
if (condition_F) {
...
}
}
}
}
}
}
и
if ( ( (condition_A)
&& (condition_B)
)
|| ( (condition_C)
&& (condition_D)
)
|| ( (condition_E)
&& (condition_F)
)
)
{
do_this_same_thing();
}
в отличие от
if (condition_A && condition_B) {
do_this_same_thing();
}
if (condition_C && (condition_D) {
do_this_same_thing();
}
if (condition_E && condition_F) {
do_this_same_thing();
}
Большинство инструментов статического анализа для проверки кода будут жаловаться, если несколько условных выражений не используют явные скобки, предписывающие анализ выражений, вместо того, чтобы полагаться на правила приоритета операторов и меньше скобок.
Вертикальное выравнивание на одном и том же уровне отступа открытых / закрытых скобок {}, открытых закрывающих скобок (), условных выражений с круглыми скобками и операторов слева - очень полезная практика, которая значительно повышает удобочитаемость и ясность кода в отличие от для заклинивания всего, что может быть зажато в одну строку, без вертикального выравнивания, пробелов или скобок
Правила приоритета операторов хитры, например, && имеет более высокий приоритет, чем ||, но | имеет приоритет перед &&
Итак, ...
if (expr_A & expr_B || expr_C | expr_D & expr_E || expr_E && expr_F & expr_G || expr_H {
}
- это действительно простое множественное условное выражение, которое простые люди могут читать и оценивать неправильно.
if ( ( (expr_A)
& (expr_B)
)
|| ( (expr_C)
| ( (expr_D)
& (expr_E)
)
)
|| ( (expr_E)
&& ( (expr_F)
& (expr_G)
)
)
|| (expr_H)
)
{
}
Нет ничего плохого в горизонтальном пространстве (переводы строк), вертикальном выравнивании или явной скобке, определяющей оценку выражений, все из которых УЛУЧШАЕТ читабельность и ясность