Re[2]: [Trick] If-break
От: Vain Россия google.ru
Дата: 14.04.09 09:33
Оценка: :)
Здравствуйте, Ytz, Вы писали:

Ytz>Если условия так навернуты, что из них аж по брейку выходить надо, то явно пора что-то рефакторить.

Условие — это лишь форма использования. Можно и сократить для наглядности:
//Breakable scope.
{
  //blabla
  break;
  //blabla
}
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[9]: А лучше читать Дейкстру и писать процедурно... ;)
От: Erop Россия  
Дата: 14.04.09 09:35
Оценка:
Здравствуйте, Vain, Вы писали:

V>Что ты пытаешься доказать? Что goto лучше break?

Нет, то, что стандартные средства известнее, и следовательно читабельнее велосипедов...

E>>IMHO, это совершенно эквивалентный код, но вторая версия читабельнее...

V>Ну ты всё понял.
А вот ты нет. Это ты пришёл спросить что не так в твоём коде. Тебе дофига уже сказали чего там не так. Пора начинать говорить "спасибо за критику", а не хамить и борзеть...

V>И что?

И неудобно. При этом это только один косяк с отладчиком, который пришёл мне в голову сразу. Уверен, что при использовании найдутся ещё...

V>Какое удешевление и автоматизация в 3х строчках кода? Ну ты сноб..

Про хамить -- смотри выше. А удешевление и автоматизация не в твоих макросах (там, кстати, у тебя минимум 4 строчки выходит) а в коде, в котором вместо if будет использоваться if_break... В смысле с if_break будет увеличение ручной работы и удорожание...

E>>Только всё равно лучше goto использовать для этих целей. Прямее, яснее и без хаккерства.

E>>А ещё лучше читать Дейкстру и писать процедурно...
V>А ещё лучше не протирать чтаны на форумах.
Ну дык и не протирай
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: [Trick] If-break
От: Erop Россия  
Дата: 14.04.09 09:48
Оценка:
Здравствуйте, Vain, Вы писали:

V>Условие — это лишь форма использования. Можно и сократить для наглядности:

V>
V>//Breakable scope.
V>{
V>  //blabla
V>  break;
V>  //blabla
V>}
V>

Зачем тогда вообще писать второе блабла?

Может быть ты приведёшь кусок настоящего кода, где этот твой if_break реально хорош?..
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: [Trick] If-break
От: Vain Россия google.ru
Дата: 14.04.09 09:55
Оценка:
Здравствуйте, Erop, Вы писали:

V>>Условие — это лишь форма использования. Можно и сократить для наглядности:

E>Зачем тогда вообще писать второе блабла?
E>Может быть ты приведёшь кусок настоящего кода, где этот твой if_break реально хорош?..
Чтобы ты всё опять свёл к goto и все будут счастливы?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[5]: [Trick] If-break
От: Erop Россия  
Дата: 14.04.09 10:12
Оценка:
Здравствуйте, Vain, Вы писали:

V>Чтобы ты всё опять свёл к goto и все будут счастливы?

1) Почему я? Тебе тут разные люди про goto уже пишут...
Ты правда не понимаешь, что твой хаккерский break -- это тоже самое, что goto, только хуже?

2) А пример нужен для того, чтобы понять ЗАЧЕМ ТЕБЕ ЭТО ПОНАДОБИЛОСЬ. Всем как-то не нужно, а тебе нужно. Интересно же зачем...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Про break и goto
От: Alexander G Украина  
Дата: 14.04.09 10:22
Оценка: +1
Действительно ли break всегда, когда уместен, лучше goto ?
while (GetMessage(&msg, NULL, 0, 0))
{
  if (NULL == msg.hwnd)
  {
    switch(msg.message)
    {
      case WM_USER:
        break;
    }
  }
  else
  {
    DispatchMessage(&msg);
  }
}
Русский военный корабль идёт ко дну!
Re[10]: А лучше читать Дейкстру и писать процедурно... ;)
От: Vain Россия google.ru
Дата: 14.04.09 12:28
Оценка:
Здравствуйте, Erop, Вы писали:

V>>Что ты пытаешься доказать? Что goto лучше break?

E>Нет, то, что стандартные средства известнее, и следовательно читабельнее велосипедов...
Чем тебе велосипед Alex F не нравиться?

E>>>IMHO, это совершенно эквивалентный код, но вторая версия читабельнее...

V>>Ну ты всё понял.
E>А вот ты нет. Это ты пришёл спросить что не так в твоём коде. Тебе дофига уже сказали чего там не так. Пора начинать говорить "спасибо за критику", а не хамить и борзеть...
Речь идёт уже про break vs. goto, а не про мой велосипед! И ни кто не борзеет.

V>>И что?

E>И неудобно. При этом это только один косяк с отладчиком, который пришёл мне в голову сразу. Уверен, что при использовании найдутся ещё...
V>>Какое удешевление и автоматизация в 3х строчках кода? Ну ты сноб..
E>Про хамить -- смотри выше. А удешевление и автоматизация не в твоих макросах (там, кстати, у тебя минимум 4 строчки выходит) а в коде, в котором вместо if будет использоваться if_break... В смысле с if_break будет увеличение ручной работы и удорожание...
бред.

E>>>Только всё равно лучше goto использовать для этих целей. Прямее, яснее и без хаккерства.

E>>>А ещё лучше читать Дейкстру и писать процедурно...
V>>А ещё лучше не протирать чтаны на форумах.
E>Ну дык и не протирай
Кто бы говорил..
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[6]: [Trick] If-break
От: Vain Россия google.ru
Дата: 14.04.09 12:30
Оценка: -2
Здравствуйте, Erop, Вы писали:

V>>Чтобы ты всё опять свёл к goto и все будут счастливы?

E>1) Почему я? Тебе тут разные люди про goto уже пишут...
E>Ты правда не понимаешь, что твой хаккерский break -- это тоже самое, что goto, только хуже?
нет.
E>2) А пример нужен для того, чтобы понять ЗАЧЕМ ТЕБЕ ЭТО ПОНАДОБИЛОСЬ. Всем как-то не нужно, а тебе нужно. Интересно же зачем...
будет надо, найдешь пример.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: Про break и goto
От: Vain Россия google.ru
Дата: 14.04.09 12:35
Оценка: :)
Здравствуйте, Alexander G, Вы писали:

AG>Действительно ли break всегда, когда уместен, лучше goto ?

AG>
AG>while (GetMessage(&msg, NULL, 0, 0))
AG>{
AG>  if (NULL == msg.hwnd)
AG>  {
AG>    switch(msg.message)
AG>    {
AG>      case WM_USER:
AG>        break;
AG>    }
AG>  }
AG>  else
AG>  {
AG>    DispatchMessage(&msg);
AG>  }
AG>}
AG>

Почему все сводят мою идею к goto? Я не понимаю, я поставил вопрос break vs. goto? Речь идёт про выход из одного скопа, что не так-то с примером Alex F?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: [Trick] If-break
От: Roman Odaisky Украина  
Дата: 14.04.09 13:24
Оценка:
Зачем так сложно?

#define BREAKABLE_SCOPE if(int _stop = 0); else while(!_stop++)

BREAKABLE_SCOPE if(condition)
{
    if(something)
    {
        break;
    }
}

даже можно еще хуже:

define using(DECL) if(bool _stop = false); else for(DECL; !_stop; stop = true)

using(std::unique_ptr<X> x(new X))
{
    . . .
}

Вот кто бы (с помощью метапрограммирования?) сделал break для именованных циклов...
До последнего не верил в пирамиду Лебедева.
Re[11]: А лучше читать Дейкстру и писать процедурно... ;)
От: Erop Россия  
Дата: 14.04.09 13:57
Оценка:
Здравствуйте, Vain, Вы писали:

E>>Нет, то, что стандартные средства известнее, и следовательно читабельнее велосипедов...

V>Чем тебе велосипед Alex F не нравиться?
1) Тем, что велосипед, то есть не понятен без доп. разбирательсв, не поддерживается редакторами, подсветкой, автодополнялками, автоформатилками, отладчиками, тулзами по рефакторингу и т. д.
2) Тем, что позволяет использовать странным способом слово dafault:
3) Тем, что маскирует использование goto, ничего по сути не меняя в коде
4) Возможен конфликт имён. Вдруг у кого-то таки есть где-то идентификатор if_break, или breakable...

V>Речь идёт уже про break vs. goto, а не про мой велосипед! И ни кто не борзеет.

То есть ты признаёшься ещё и в злостном и преднамеренном офтопе?
Если ты хочешь поспорить по воводу что лучше break vs goto, то тебе в КСВ, IMHO...
Правда если формулировка будет примерно такая: "что лучше, основанный на макросах расширенный синтексис С++, или просто goto на метку в конце блока", то скорее всего все скажут, что велосипед ещё хуже
Кстати, в вариенте с goto метке надо дать имя, то есть осмысленное имя, что повышает читабельность...

V>бред.

Никто, говоришь, не борзеет и не хамит?

V>>>А ещё лучше не протирать чтаны на форумах.

E>>Ну дык и не протирай
V>Кто бы говорил..
А с чего ты взял, что я сейчас в штанах?
Короче. По поводу троллинга -- или на три буквы, в смысле в КСВ...
А по существу, читай SUBJ...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Про break и goto
От: Erop Россия  
Дата: 15.04.09 22:10
Оценка:
Здравствуйте, Vain, Вы писали:

V>Почему все сводят мою идею к goto? Я не понимаю, я поставил вопрос break vs. goto? Речь идёт про выход из одного скопа, что не так-то с примером Alex F?


Потому, что ты не можешь внятно объяснить чем оно от goto отличается... Я же не зря прошу тебя привести реальный пример, где это могло бы улучшить код...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Про break и goto
От: мухоморец Украина  
Дата: 16.04.09 09:16
Оценка: 10 (1)
Здравствуйте, Erop, Вы писали:

E>Потому, что ты не можешь внятно объяснить чем оно от goto отличается... Я же не зря прошу тебя привести реальный пример, где это могло бы улучшить код...


честно признаюсь, было пару раз что не хватало break из вложеного if(напр. менялось условие со временем), и при этом менять-рефакторить if было очень лениво, всё так красиво и органично выглядело)))))))))), легче было бы добавить новый if с break )). О goto даже не думал, тем более по break привык искать точку "выхода". Но как подумаю, что через неделю сам с ужасом разбирал бы куда вываливаемся(искал бы по привычке цикл свитч). Было легче(быстрее) мне тогда было на скорую if вывести в отдельную функцию и там добавить if с return, но принцип был бы такой же. Но то всё от лени были такие мысли , потом бы огрёб проблем.
Re: [Trick] If-break
От: Аноним  
Дата: 16.04.09 10:29
Оценка: 1 (1) +1
Здравствуйте, Vain, Вы писали:

V>Тут недавно пришла в голову мысль выходить из if-else условия по break. Придумалась такая вот реализация:


V>
V>#define EVALDEF(x) x
V>#define JOINSTR_(x,y) x##y
V>#define JOINSTR(x,y) EVALDEF(JOINSTR_)(x,y)

V>#define if_break(x) int JOINSTR(line_var_,__LINE__)=0; while((++JOINSTR(line_var_,__LINE__))&0x1) if(x)
V>

V>Использование:
V>
V>int main()
V>{
V>  if_break(0) {
V>    printf("1\n");
V>  } else {
V>    printf("2\n");
V>  }

V>  if_break(1) {
V>    break;
V>    printf("3\n");
V>  } else {
V>    printf("4\n");
V>  }

V>  if_break(0) {
V>    printf("5\n");
V>  } else {
V>    printf("6\n");
V>    if_break(1) {
V>      printf("7\n");
V>      break;
V>      printf("8\n");
V>    } else {
V>      printf("9\n");
V>    }
V>    printf("10\n");
V>    break;
V>    printf("11\n");
V>  }

V>  printf("12\n");

V>  return 0;
V>}
V>

V>

V>2
V>6
V>7
V>10
V>12


V>Проверял торлько под 2005 студией.

V>Какие здесь могут быть проблемы?
Я делаю проще:


do
{
// а тут break;
}while(false);
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.