Re[2]: if (false)
От: LaptevVV Россия  
Дата: 26.11.09 09:30
Оценка: +1
Здравствуйте, frogkiller, Вы писали:

F>Дожили... язык программирования в качестве костыля для IDE

Так и должно быть!
Язык программирования должен позволять писать модули для расширения ИДЕ.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: if (false)
От: andrey.desman  
Дата: 26.11.09 11:35
Оценка:
Здравствуйте, igna, Вы писали:

I>Еще одно применение if (false):


...

Если условия и действия записываются кратко и возвращают что-то осмысленное, то такая запись мне кажется более удачной:
cond1 && expr1 ||
cond2 && expr2 ||
cond3 && expr3 ||
false;


Хотя все условия соблюдаются редко. Обычно такое прокатывает просто как замена одному if.
i < 0 && (i = -i);


Таблицу функций можно сделать, опять же ( {int (*cond)(); void (*act)();} ), а с шаблонами так вообще можно намутить Вариантов масса...
Re[2]: if (false)
От: igna Россия  
Дата: 26.11.09 11:43
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Если условия и действия записываются кратко и возвращают что-то осмысленное, то такая запись мне кажется более удачной:

AD>cond1 && expr1 ||
AD>cond2 && expr2 ||
AD>cond3 && expr3 ||
AD>false;


Тот самый форматировщик превратит это скорее всего вот во что:

cond1 && expr1 ||
    cond2 && expr2 ||
    cond3 && expr3 ||
    false;


Так что, тогда уж так:

    false
        || cond1 && expr1
        || cond2 && expr2
        || cond3 && expr3
        ;


Re[3]: if (false)
От: andrey.desman  
Дата: 26.11.09 11:47
Оценка:
Здравствуйте, igna, Вы писали:

I>Тот самый форматировщик превратит это скорее всего вот во что:

...

Я не создаю себе проблем на ровном месте и форматировщиком не пользуюсь. Я пользуюсь VIM
Re[3]: if (false)
От: trophim Россия  
Дата: 28.11.09 20:57
Оценка:
Та хто ж это такой, этот таинственный "Форматировщик"???
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Let it be! — Давайте есть пчелу!
Re[2]: if (false)
От: igna Россия  
Дата: 29.11.09 08:05
Оценка:
Здравствуйте, sokel, Вы писали:

S>#define LOG_OUT(SRC,SVR) if(!LOG::available(SRC,SVR)); else LOG::proxy(SRC,SVR).out


А что будет не так, если записать без хитростей?:

#define LOG_OUT(SRC,SVR) if(LOG::available(SRC,SVR)) LOG::proxy(SRC,SVR).out
Re[3]: if (false)
От: MT-Wizard Украина  
Дата: 29.11.09 08:31
Оценка: :)
Здравствуйте, igna, Вы писали:

I>Здравствуйте, sokel, Вы писали:


I>А что будет не так, если записать без хитростей?:


Ну...
if (foo())
   LOG_OUT(bar, baz);
else
   do_smt();

А ти, москалику, вже приїхав (с)
Re[2]: if (false)
От: Кодт Россия  
Дата: 29.11.09 18:54
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Если условия и действия записываются кратко и возвращают что-то осмысленное, то такая запись мне кажется более удачной:

AD>
AD>cond1 && expr1 ||
AD>cond2 && expr2 ||
AD>cond3 && expr3 ||
AD>false;
AD>

Когда компилятор научится расставлять точки для прерываний внутрь выражений — тогда этот подход будет иметь полное право на жизнь. А пока что, такой многоэтажный or-else — как минимум, издевательство при отладке.

Ну и ещё, все expr надо заменить на ((void)(expr), true).
Перекуём баги на фичи!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.