Разумные и неразумные сокращения в C++

Вот вполне себе реальный код:

const char* a = ::getenv("VAR");
if (a == NULL)
  a = "[NULL]";

Но в каком-то внутреннем стремлении сделать код “немного лучше”, можно написать так:

const char* a = (a = ::getenv("VAR"), a ? a : "[NULL]");

Мне внутренне больше нравиться второй вариант. Он как-то выразительнее. Но на code view я, конечно, буду настаивать однозначно на первом, так как не только мне одному этот код потом читать.

Также в С++ считается хорошим тоном объявлять переменную цикла for прямо в теле оператора:

for (int i = 0; ...

Но вот конструкции типа:

if (int a = foo()) {
  ...
}

или

while (int a = foo()) {
  ...
}

уже немного режут глаз, хотя и являются корректными.

А у вас какие есть прикольные сокращение? пусть даже не для production code?


Оригинальный пост | Disclaimer

Комментарии