Expressions and statements
ES.10
Объявляйте только одно имя на объявление
Причина
Одно объявление на строку повышает читаемость и позволяет избежать ошибок, связанных с грамматикой C/C++. Это также оставляет место для более содержательного комментария в конце строки.
Пример (плохой)
char *p, c, a[7], *pp[7], **aa[10]; // ужасно!
Исключение
Объявление функции может содержать несколько объявлений аргументов функции.
Исключение
Структурированное связывание (C++17) специально разработано для введения нескольких переменных:
auto [iter, inserted] = m.insert_or_assign(k, val);
if (inserted) { /* была добавлена новая запись */ }
Пример
template<class InputIterator, class Predicate>
bool any_of(InputIterator first, InputIterator last, Predicate pred);
или лучше с использованием концептов:
bool any_of(input_iterator auto first, input_iterator auto last, predicate auto pred);
Пример
double scalbn(double x, int n); // OK: x * pow(FLT_RADIX, n); FLT_RADIX обычно равно 2
или:
double scalbn( // лучше: x * pow(FLT_RADIX, n); FLT_RADIX обычно равно 2
double x, // базовое значение
int n // показатель степени
);
или:
// лучше: base * pow(FLT_RADIX, exponent); FLT_RADIX обычно равно 2
double scalbn(double base, int exponent);
Пример
int a = 10, b = 11, c = 12, d, e = 14, f = 15;
В длинном списке деклараторов легко не заметить неинициализированную переменную.
Контроль
Отмечайте объявления переменных и констант с несколькими деклараторами (например, int* p, q;)