Здравствуйте, Vain, Вы писали:
V>Какие здесь могут быть проблемы?
Когда поймают будут сильно бить...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Alexey F, Вы писали:
V>>Тут недавно пришла в голову мысль выходить из if-else условия по break. Придумалась такая вот реализация: AF>Хмм, а чем это отличается от: AF>
#define if_break( x ) switch ( 0 ) case 0 : if( x )
Незнаю, но отсутствие скобок меня настораживает.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Здравствуйте, Alexey F, Вы писали:
V>>>Тут недавно пришла в голову мысль выходить из if-else условия по break. Придумалась такая вот реализация: AF>>Хмм, а чем это отличается от: AF>>
V>#define if_break( x ) switch ( 0 ) case 0 : if( x )
V>
V>Незнаю, но отсутствие скобок меня настораживает.
Отсутствие каких скобок? Я вообще не очень понял для чего тебе первых три #define.
Здравствуйте, Vain, Вы писали:
V>Дык, интересно, чем плохо это решение.
Большими счетами за мед. услуги и рисками потери трудоспособности...
А если серьёзно (хотя я думаю, что ты стебёшься так своеобразно, если честно), то
1) Вообще эта куча макросов слишком сложная и может как-то не так сработать. Например, если два if_break окажется в одной строке. Скажем потому, что их засунут в какой-то макрос... Или, например, такой код что будет делать:
if( cond1 )
if_break( cond 2 )
doSamthing();
2) Тому, кто будет это читать будет сильно не понятно что за if_break такой и что там в теле break делает...
3) Как это будет взаимодействовать с отладчиками -- отдельный вопрос...
4) Про эффективность тоже тема интересная...
5) Про подсветку, рефакторинг, редакторы и т. д. тоже
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Vain, Вы писали:
V>Незнаю, но отсутствие скобок меня настораживает.
В смысле?
switch и case могут обходится без скобок. "x" упоминается только один раз, вроде, не нужно в дополнительные скобки оборачивать.
Фигурных скобок нет в обоих предложенных вариантах.
Здравствуйте, vadimcher, Вы писали:
V>Отсутствие каких скобок? Я вообще не очень понял для чего тебе первых три #define.
Он там уникальную переменную заводит...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
V>>Дык, интересно, чем плохо это решение. E>1) Вообще эта куча макросов слишком сложная и может как-то не так сработать. Например, если два if_break окажется в одной строке. Скажем потому, что их засунут в какой-то макрос... Или, например, такой код что будет делать:
if( cond1 )
if_break( cond 2 )
doSamthing();
В принципе, должен работать. E>2) Тому, кто будет это читать будет сильно не понятно что за if_break такой и что там в теле break делает...
Понятно что. E>3) Как это будет взаимодействовать с отладчиками -- отдельный вопрос...
Как? E>4) Про эффективность тоже тема интересная...
Расскажите. E>5) Про подсветку, рефакторинг, редакторы и т. д. тоже
А что с ними?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
V>В принципе, должен работать.
В принципе не скомпилируется даже...
E>>2) Тому, кто будет это читать будет сильно не понятно что за if_break такой и что там в теле break делает... V>Понятно что.
Правда? А откуда ему это станет понятно?
E>>3) Как это будет взаимодействовать с отладчиками -- отдельный вопрос... V>Как?
Скорее всего плохо. Одни мусорные переменные в окне просмотра текущих переменных чего стоить будут...
E>>4) Про эффективность тоже тема интересная... V>Расскажите.
Ну там какие-то вычисления, сравнения ненужные. Стек тратится, опять же...
E>>5) Про подсветку, рефакторинг, редакторы и т. д. тоже V>А что с ними?
Ну не знают они такого слова if_break... Во всяком случае пока ты их не научишь...
НО НА ГЛАВНЫЙ ВОПРОС ТЫ ТАК И НЕ ОТВЕТИЛ!!!
НА КОЙ ЭТО НУЖНО?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
V>>В принципе, должен работать. E>В принципе не скомпилируется даже...
Да согласен, от усталости не заметил.
E>>>2) Тому, кто будет это читать будет сильно не понятно что за if_break такой и что там в теле break делает... V>>Понятно что. E>Правда? А откуда ему это станет понятно?
Какая сложность в 3х срочках кода? Или вы боитесь дефайнов как огня — так это другой разговор.
E>>>3) Как это будет взаимодействовать с отладчиками -- отдельный вопрос... V>>Как? E>Скорее всего плохо. Одни мусорные переменные в окне просмотра текущих переменных чего стоить будут...
Watch показывает только то что ты хочешь, а не что хочет отладчик.
E>>>4) Про эффективность тоже тема интересная... V>>Расскажите. E>Ну там какие-то вычисления, сравнения ненужные. Стек тратится, опять же...
Экономим на спичках? Скажите ещё что производительность в 2 раза упадёт.. бред.
E>>>5) Про подсветку, рефакторинг, редакторы и т. д. тоже V>>А что с ними? E>Ну не знают они такого слова if_break... Во всяком случае пока ты их не научишь...
Это не большая проблема.
E>НО НА ГЛАВНЫЙ ВОПРОС ТЫ ТАК И НЕ ОТВЕТИЛ!!! E>НА КОЙ ЭТО НУЖНО?
А из топика не ясно? Выходить из скопа. Не надо лишних условий писать там где это не нужно, достаточен один бряк и всё. Оччень удобно.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[7]: А лучше читать Дейкстру и писать процедурно... ;)
Здравствуйте, Vain, Вы писали:
V>Да согласен, от усталости не заметил.
И в случае, когда два if_break попадают в одну строку, например из-за того, что они внутри одного макроса, тоже нехорошо получится...
V>Какая сложность в 3х срочках кода? Или вы боитесь дефайнов как огня — так это другой разговор.
Сложность такая, что при поддержке программист увидит не определение этих твоих безумных макросов, а использование. И начнёт думать, зачем всё так нестандартно сделано. А так, как никаких преимуществ такого поделия не видно, то очень уж задуматься можно...
IMHO, это совершенно эквивалентный код, но вторая версия читабельнее...
Если тебе вторая кажется неприемлемой, то и первая должна бы...
V>Watch показывает только то что ты хочешь, а не что хочет отладчик.
Да? Есть много отладчиков и много платформ. Я не знаю о какой именно ты пишешь, но подозреваю, что о MSVC. Там есть такое удобное окошко, которое типа auto locals называется, или как-то похоже. Так вот оно показывает автоматические переменные текущей функции, используемые в исполняемом сейчас куске кода...
V>Экономим на спичках? Скажите ещё что производительность в 2 раза упадёт.. бред.
IMHO, бред усложнять код НИЧЕГО ВЗАМЕН НЕ ПОЛУЧАЯ
V>Это не большая проблема.
Э-э-э? Почему небольшая? Все за удешевление и автоматизацию поддержки бьются, а у тебя небольшая проблема?
E>>НО НА ГЛАВНЫЙ ВОПРОС ТЫ ТАК И НЕ ОТВЕТИЛ!!! E>>НА КОЙ ЭТО НУЖНО? V>А из топика не ясно? Выходить из скопа. Не надо лишних условий писать там где это не нужно, достаточен один бряк и всё. Оччень удобно.
Достаточно одного goto и получаешь РОВНО ТУ ЖЕ СЕМАНТИКУ, только без велосипедов...
Кроме того не понятно зачем из скопа так выходить вообще надо, если уж тебе goto не нравится...
Кстати, если уж того, что ты хочешь добиваться, то логичнее так сделать:
Только всё равно лучше goto использовать для этих целей. Прямее, яснее и без хаккерства.
А ещё лучше читать Дейкстру и писать процедурно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Vain, Вы писали:
V>Какая сложность в 3х срочках кода?
Ты сам ответил на свой вопрос: V>Да согласен, от усталости не заметил.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Vain, Вы писали:
V>Какие здесь могут быть проблемы?
Смысл?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Смысл?
Видимо goto-фобия помноженная на неумение писать нормально...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
"Vain" <19391@users.rsdn.ru> wrote in message news:3360981@news.rsdn.ru... > Тут недавно пришла в голову мысль выходить из if-else условия по break. Придумалась такая вот реализация: > >
Здравствуйте, Erop, Вы писали:
V>>Какая сложность в 3х срочках кода? Или вы боитесь дефайнов как огня — так это другой разговор. E>Сложность такая, что при поддержке программист увидит не определение этих твоих безумных макросов, а использование. И начнёт думать, зачем всё так нестандартно сделано. А так, как никаких преимуществ такого поделия не видно, то очень уж задуматься можно...
E>Сравни читабельность:
E>IMHO, это совершенно эквивалентный код, но вторая версия читабельнее...
Ну ты всё понял.
V>>Watch показывает только то что ты хочешь, а не что хочет отладчик. E>Да? Есть много отладчиков и много платформ. Я не знаю о какой именно ты пишешь, но подозреваю, что о MSVC. Там есть такое удобное окошко, которое типа auto locals называется, или как-то похоже. Так вот оно показывает автоматические переменные текущей функции, используемые в исполняемом сейчас куске кода...
И что?
V>>Экономим на спичках? Скажите ещё что производительность в 2 раза упадёт.. бред. E>IMHO, бред усложнять код НИЧЕГО ВЗАМЕН НЕ ПОЛУЧАЯ
V>>Это не большая проблема. E>Э-э-э? Почему небольшая? Все за удешевление и автоматизацию поддержки бьются, а у тебя небольшая проблема?
Какое удешевление и автоматизация в 3х строчках кода? Ну ты сноб..
E>Только всё равно лучше goto использовать для этих целей. Прямее, яснее и без хаккерства. E>А ещё лучше читать Дейкстру и писать процедурно...
А ещё лучше не протирать чтаны на форумах.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Ytz, Вы писали:
Ytz>Если условия так навернуты, что из них аж по брейку выходить надо, то явно пора что-то рефакторить.
Условие — это лишь форма использования. Можно и сократить для наглядности:
//Breakable scope.
{
//blablabreak;
//blabla
}
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[9]: А лучше читать Дейкстру и писать процедурно... ;)
Здравствуйте, Vain, Вы писали:
V>Что ты пытаешься доказать? Что goto лучше break?
Нет, то, что стандартные средства известнее, и следовательно читабельнее велосипедов...
E>>IMHO, это совершенно эквивалентный код, но вторая версия читабельнее... V>Ну ты всё понял.
А вот ты нет. Это ты пришёл спросить что не так в твоём коде. Тебе дофига уже сказали чего там не так. Пора начинать говорить "спасибо за критику", а не хамить и борзеть...
V>И что?
И неудобно. При этом это только один косяк с отладчиком, который пришёл мне в голову сразу. Уверен, что при использовании найдутся ещё...
V>Какое удешевление и автоматизация в 3х строчках кода? Ну ты сноб..
Про хамить -- смотри выше. А удешевление и автоматизация не в твоих макросах (там, кстати, у тебя минимум 4 строчки выходит) а в коде, в котором вместо if будет использоваться if_break... В смысле с if_break будет увеличение ручной работы и удорожание...
E>>Только всё равно лучше goto использовать для этих целей. Прямее, яснее и без хаккерства. E>>А ещё лучше читать Дейкстру и писать процедурно... V>А ещё лучше не протирать чтаны на форумах.
Ну дык и не протирай
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Может быть ты приведёшь кусок настоящего кода, где этот твой if_break реально хорош?..
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
V>>Условие — это лишь форма использования. Можно и сократить для наглядности: E>Зачем тогда вообще писать второе блабла? E>Может быть ты приведёшь кусок настоящего кода, где этот твой if_break реально хорош?..
Чтобы ты всё опять свёл к goto и все будут счастливы?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Чтобы ты всё опять свёл к goto и все будут счастливы?
1) Почему я? Тебе тут разные люди про goto уже пишут...
Ты правда не понимаешь, что твой хаккерский break -- это тоже самое, что goto, только хуже?
2) А пример нужен для того, чтобы понять ЗАЧЕМ ТЕБЕ ЭТО ПОНАДОБИЛОСЬ. Всем как-то не нужно, а тебе нужно. Интересно же зачем...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]
Почему все сводят мою идею к goto? Я не понимаю, я поставил вопрос break vs. goto? Речь идёт про выход из одного скопа, что не так-то с примером Alex F?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, 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...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Vain, Вы писали:
V>Почему все сводят мою идею к goto? Я не понимаю, я поставил вопрос break vs. goto? Речь идёт про выход из одного скопа, что не так-то с примером Alex F?
Потому, что ты не можешь внятно объяснить чем оно от goto отличается... Я же не зря прошу тебя привести реальный пример, где это могло бы улучшить код...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Потому, что ты не можешь внятно объяснить чем оно от goto отличается... Я же не зря прошу тебя привести реальный пример, где это могло бы улучшить код...
честно признаюсь, было пару раз что не хватало break из вложеного if(напр. менялось условие со временем), и при этом менять-рефакторить if было очень лениво, всё так красиво и органично выглядело)))))))))), легче было бы добавить новый if с break )). О goto даже не думал, тем более по break привык искать точку "выхода". Но как подумаю, что через неделю сам с ужасом разбирал бы куда вываливаемся(искал бы по привычке цикл свитч). Было легче(быстрее) мне тогда было на скорую if вывести в отдельную функцию и там добавить if с return, но принцип был бы такой же. Но то всё от лени были такие мысли , потом бы огрёб проблем.