*** ВНИМАНИЕ: Блог переехал на другой адрес - demin.ws ***

среда, 8 июня 2011 г.

Разумные и неразумные сокращения в 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?

1 комментарий:

  1. А я вот в последнее время полюбил объявление переменной в if . Удобно когда функция возвращает выделенный внутри указатель , перед закрывающей скидкой ставиться delete, таким образом удобно следить за корректным освобождением памяти в конце блока.

    ОтветитьУдалить