А>Вот, вот. Это я называю маразмом псевдоструктурного программирования в чистом виде. Снижаеться производительность,
Кого волнует производительность в данном случае? Меня — нет. Вы снижение производительности и замерить-то не сможете — настолько оно будет незначительным.
А>читабельность
читабельность — дело субъективное. По мне так читабельность моей версии вполне OK. Ну, конечно, при правильном форматировании, которое потерялось, потому что тэг "code" забыл поставить
А>только что б не страшный goto
А что, этого мало?
А>несмотря на то что применение goto здесь выгодно во всех отношениях.
Не вижу никаких выгод. Что мне дает goto, кроме головной боли?
Производительность не упоминать без численной оценки и описания способов измерения.
Читабельность не упоминать, потому что, как я уже сказал, это дело субъективное.
Здравствуйте, Аноним, Вы писали:
А>B превратился и так не сильно удобоваримый "COM-код" в абсолютный ужас.
"Ужас" — это эмоции. У меня они другие. Исходный код действительно не сильно удобоваримый, после моих изменений он стал значительно лучше, не находите?
А>И заметте это можно сказать только начало кода, а дальше должен идти разбор XML-документа с поджключением многих интерфейсов и много чего ещё. А 10-20 вложенных if-ов эт конечно "красиво", а уж как "структурировано"
Разве нет других способов 10-20 вложенных if-ов разнести кроме как использовать goto?
А>Только бы в скобочках не запутаться.
Будете писать аккуратно — не запутаетесь, даже без "всемогущего редактра VS". Я фичами по поиску пар для скобочек даже и не пользуюсь, потому что пишу аккуратно. Скобочка под скобочкой, каждий блок смещается вправо на один Tab символ
А>Жаль что не все редакторы так всемогущи.
А мне не надо, чтобы все были такими. Достаточно одного.
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[17]: Изменения в MFC 7.0/7.1
От:
Аноним
Дата:
03.06.03 19:24
Оценка:
Здравствуйте, Serguei666, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>B превратился и так не сильно удобоваримый "COM-код" в абсолютный ужас. S>"Ужас" — это эмоции. У меня они другие. Исходный код действительно не сильно удобоваримый, после моих изменений он стал значительно лучше, не находите?
Нет, абсолютно нет. Он стал более громоздким и менее читабельным.
А>>И заметте это можно сказать только начало кода, а дальше должен идти разбор XML-документа с поджключением многих интерфейсов и много чего ещё. А 10-20 вложенных if-ов эт конечно "красиво", а уж как "структурировано" S>Разве нет других способов 10-20 вложенных if-ов разнести кроме как использовать goto?
Какие? Хотя могу заранее сказать все они увелмчат код и сделают его абсолютно не читабельным. (правда повторю, что в данном и конкретном случае преминимы исключения, правда скорее всего надо будет написать свой класс исключения),
А>>Только бы в скобочках не запутаться. S>Будете писать аккуратно — не запутаетесь, даже без "всемогущего редактра VS". Я фичами по поиску пар для скобочек даже и не пользуюсь, потому что пишу аккуратно. Скобочка под скобочкой, каждий блок смещается вправо на один Tab символ
Не это не для меня. Я просто выделяю код и давлю Alt+F8.
Но как бы вы аккуратно не писали код, всё же найти нужную скобку не легко, потому как даже 5 вложенных if-ов не помещаеться в экран.
Здравствуйте, Аноним, Вы писали:
А>1. Для многих данных можно сказать что их преобразование или проверка не может понадобиться никогда.
Кино такое было — "никогда не говори никогда".
А>2. Приведённый вками пример про m_Val/2 абсолютно не корректен. Если вы так пишите программы то вам надо задуматься о вашей квалификации.
Спасибо, я о ней все время думаю.
А>Так не проектируют. Что бы реализация класса менялась из-за того, что программист решил что один из параметров расчётов нужно сделать в 2 раза меньше ... эт полный аут. Я себе представляю документацию к программе.
Документация тоже поменяется, если необходимо. Это часть цикла.
А>"Ну вот это параметр надо установить в 2 раза больше чем необходимо для расчёта. Ну это потому что этот класс использовался в таком то коде и программеру лень было лазить по коду и менять его."
Это же пример. К чему эти фантазии?
А>3. Я всё же не представляю кода в котором может быть не то, что 200, а даже и 10 установок параметра при том что все эти куски кода были абсолютно разнородны и их никаким образом не нелльзя было оформить в виде отдельной функции.
Ну, что я могу сказать. Не представляете, потому что не видели. А я видел. Было, конечно, не 200 присвоений, но 110. И мне пришлось весь этот мусор чистиь. Занятие на недели, между прочим.
Вы вообще криво написанные проекты видели в жизни? Состоящие из 900 файлов? Написанные второпях и непонятно кем? А пытались в таких проектах разбираться? Уверяю вас, вас приятно удивит, насколько программеры могут быть неквалифицированными. А все в том числе и потому, что к советам не прислушиватся. Тоже, видимо считают, что чего-то там НИКОГДА не произойдет.
S>>>>Наделаете ошибок при Replace. Гарантирую. T>>>Вообще то это была шутка, но гарантии здесь не уместны. S>>Почему? Лично пробовал и к такому выводу пришел. Так что вполне уместны. А>То есть вы мне гарантирууту, что я возьму 100 примеров, зселаю там Replace и в каждом случае у меня будет ошибка? Смело однако.
Я не сказал про каждый случай. Я сказал, что количество опибок будет ненулевое.
T>>>Мы же о пухлости говорили про какие то 16:1. Эт то тут причём. S>>Ну, если о пухлости и 16:1 — то SetGet получается намного компактнее чем "=" А>Я не понию почему тут если А>И ещё я наверно туплю, почему это SetGet получаються компактнее. А>SetVal(Val); // 12 А>m_Val=Val; // 10 А>+ протокол и реализация методов.
Так я вам говорю, завтра вам понадобится добавить строку, исполнямую всякий раз, когда вы делаете m_Val=Val, и ваш код увеличится на (количество "m_Val=Val") строк. А мой — на одну-единственную строку. А при рассмотрении долгосрочного проекта разница будет расти, и ваш размер вашего кода будет проигрывать размеру моего все больше и больше.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Serguei666, Вы писали:
S>>Здравствуйте, Аноним, Вы писали:
А>>>B превратился и так не сильно удобоваримый "COM-код" в абсолютный ужас. S>>"Ужас" — это эмоции. У меня они другие. Исходный код действительно не сильно удобоваримый, после моих изменений он стал значительно лучше, не находите? А>Нет, абсолютно нет. Он стал более громоздким и менее читабельным.
Ну вот. Приплыли.
А я вот говорю. "Он стал менее громоздким и более читабельным". Причем АБСОЛЮТНО. Ваше слово против моего слова. Хотите предложить способ оценки громоздкости и читабельности? Если нет, то перестаньте такими словами бросаться. Они ценности не имеют, ибо нет способа оценки их правдивости.
А>>>И заметте это можно сказать только начало кода, а дальше должен идти разбор XML-документа с поджключением многих интерфейсов и много чего ещё. А 10-20 вложенных if-ов эт конечно "красиво", а уж как "структурировано" S>>Разве нет других способов 10-20 вложенных if-ов разнести кроме как использовать goto? А>Какие? Хотя могу заранее сказать все они увелмчат код и сделают его абсолютно не читабельным. (правда повторю, что в данном и конкретном случае преминимы исключения, правда скорее всего надо будет написать свой класс исключения),
Например, разбить код на насколько функций.
А>>>Только бы в скобочках не запутаться. S>>Будете писать аккуратно — не запутаетесь, даже без "всемогущего редактра VS". Я фичами по поиску пар для скобочек даже и не пользуюсь, потому что пишу аккуратно. Скобочка под скобочкой, каждий блок смещается вправо на один Tab символ А>Не это не для меня. Я просто выделяю код и давлю Alt+F8. А>Но как бы вы аккуратно не писали код, всё же найти нужную скобку не легко, потому как даже 5 вложенных if-ов не помещаеться в экран.
Вы мне рассказываете, как мне нелегко? Не надо. Я лучше знаю, легко мне или нет. Докладываю: легко. Никогда не было проблем.
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[17]: Изменения в MFC 7.0/7.1
От:
Аноним
Дата:
03.06.03 20:35
Оценка:
Здравствуйте, Serguei666, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Эт tymchick, просто у меня cook-исы слетели а пароль забыл.
T>>>>А примерчик в студию можно для 4ох циклов?
S>
А>>Вот, вот. Это я называю маразмом псевдоструктурного программирования в чистом виде. Снижаеться производительность, S>Кого волнует производительность в данном случае? Меня — нет. Вы снижение производительности и замерить-то не сможете — настолько оно будет незначительным.
Конечно, если это процедура не вызываеться где нибудь пару милилонов раз.
А>>читабельность S>читабельность — дело субъективное. По мне так читабельность моей версии вполне OK. Ну, конечно, при правильном форматировании, которое потерялось, потому что тэг "code" забыл поставить Эт вы написали только потому что в любом случае нужно возразить. В данном (и не только в данном) случае "читабельность" абсолютно объективна. Это скажет любой разумный человек. Даже если отбросить элементарную громоздкость кода и трезво оценить читабельность.
Скажем просматривает человек ваш код (я всё же думаю что реальный код будет немного более сложнее, не так примитивен) и видит.
ToContinue = false;
break;
он ищет глазами конец цикла ...
"- ура, нашёл "
но там он видит
if(!ToContinue) break;
Ну ничего. Он ищет следующий конец цикла.
"- ура, нашёл "
но там
if(!ToContinue) break;
Тут он начинает вспоминать "хорошими словами" того, кто это писал.
Он ищет следующий конец цикла.
Уже без особой радости и с подозрением он его находит.
И что он видит? Правильно
if(!ToContinue) break;
И он уже готов убить того, кто это писал.
С трудом совладав с чувствами он всё же находит в себе силы проюолжить поиски.
И о счастье, вот оно избавлениею
Что же происходит если человек видит goto.
— Ё моё, кто это писал, это же не структурное пр-е
Но тем неменее он переваривает отвращение и просто находит метку ... находит он её быстро, потому что она одна большими буквами и с жирным коментарием.
И потом, если читабельность это дело субъективное, нто из-за чего весь сыр бор? Ведь главный минус (и практически единственный) goto это снижение читабельности при его злоупотреблении. Вы когда нибудь видели старые большие программы на Байсике или Фортране? Это то, что называеться Write only code. Это действительно ужас, невозможно понять
куда какие переходы и почему.
Есть конечно другой негативный аспект goto. Это так называемое нарушение логики программы. Ну то есть нелогичный оператор, не имеющий отношение к логике и выполняющий просто навигацию по коду. Но это из разряда чистой филисофии не связанной с практикой. В данном случае невозможно ненарушить логику. Суть в том что нужно завершить итеративный процесс ... но "логичные" операторы языка не позволяют это сделать сразу. А все извращения с поступенчатым выходом из циклов с помощью флажка есть так же не имеют под собой алгоритмической логики ... они не несут смысловой логической нагрузки. Суть в том что надо выйти из цыклов и для реализации этого вы пишите длинную последовательность операций которая сводиться к простой новигации по коду с целью достичь нужной точки, при этом затрачиваються как вычислительные ресурсы так и память, вместо того что бы зделать goto, cуть котрого в простом изменении указателя команд.
Я вас убедил? Неужели всё это я писал зря .
А>>только что б не страшный goto S>А что, этого мало?
Так что в нём страшного?
А>>несмотря на то что применение goto здесь выгодно во всех отношениях. S>Не вижу никаких выгод. Что мне дает goto, кроме головной боли?
У вас что компьютер пронзительно пищит на строчке goto ... так его S>Производительность не упоминать без численной оценки и описания способов измерения.
Ну такты можно посчитать ))) без учёта оптимизации )))
Re[19]: Изменения в MFC 7.0/7.1
От:
Аноним
Дата:
03.06.03 21:10
Оценка:
Здравствуйте, Serguei666, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, Serguei666, Вы писали:
S>>>Здравствуйте, Аноним, Вы писали:
А>>>>B превратился и так не сильно удобоваримый "COM-код" в абсолютный ужас. S>>>"Ужас" — это эмоции. У меня они другие. Исходный код действительно не сильно удобоваримый, после моих изменений он стал значительно лучше, не находите? А>>Нет, абсолютно нет. Он стал более громоздким и менее читабельным. S>Ну вот. Приплыли. S>А я вот говорю. "Он стал менее громоздким и более читабельным". Причем АБСОЛЮТНО. Ваше слово против моего слова. Хотите предложить способ оценки громоздкости и читабельности? Если нет, то перестаньте такими словами бросаться. Они ценности не имеют, ибо нет способа оценки их правдивости.
1. Громоздкость — количество строк кода при условии конечно того, что один операторы, одна строка.
2. Читабельность. Ну один из примеров "хорошей" читабельности я уже привёл в письме про goto. В данном случае что бы определить следующий оператор программы вам нужно найти скобку, для чего вам нужно либо проанализировать вложенность скобок либо (если вы аккуратно писали) оценить по отступам. Как первое так и второе (при большой вложенности и удалённости) скобок является значительно более сложной задачей для человеческого мозга чем отыскание в тексте метки, отмеченной жирным коментарием.
Всё абсолютно объективно. Разве нет? Или ваш мозг как то иначе устроен?
А>>>>И заметте это можно сказать только начало кода, а дальше должен идти разбор XML-документа с поджключением многих интерфейсов и много чего ещё. А 10-20 вложенных if-ов эт конечно "красиво", а уж как "структурировано" S>>>Разве нет других способов 10-20 вложенных if-ов разнести кроме как использовать goto? А>>Какие? Хотя могу заранее сказать все они увелмчат код и сделают его абсолютно не читабельным. (правда повторю, что в данном и конкретном случае преминимы исключения, правда скорее всего надо будет написать свой класс исключения), S>Например, разбить код на насколько функций.
В данном случае это мало поможет.
А>>>>Только бы в скобочках не запутаться. S>>>Будете писать аккуратно — не запутаетесь, даже без "всемогущего редактра VS". Я фичами по поиску пар для скобочек даже и не пользуюсь, потому что пишу аккуратно. Скобочка под скобочкой, каждий блок смещается вправо на один Tab символ А>>Не это не для меня. Я просто выделяю код и давлю Alt+F8. А>>Но как бы вы аккуратно не писали код, всё же найти нужную скобку не легко, потому как даже 5 вложенных if-ов не помещаеться в экран. S>Вы мне рассказываете, как мне нелегко? Не надо. Я лучше знаю, легко мне или нет. Докладываю: легко. Никогда не было проблем.
Дело не в "легко" или "тяжело" ... дело в "легче", "тяжелее".
Здравствуйте, Аноним, Вы писали:
А>>>Вот, вот. Это я называю маразмом псевдоструктурного программирования в чистом виде. Снижаеться производительность, S>>Кого волнует производительность в данном случае? Меня — нет. Вы снижение производительности и замерить-то не сможете — настолько оно будет незначительным. А>Конечно, если это процедура не вызываеться где нибудь пару милилонов раз.
Дык хоть газиллионов. Какая мне разница, если вы численную оценкы представить не можете?
А>>>читабельность S>>читабельность — дело субъективное. По мне так читабельность моей версии вполне OK. Ну, конечно, при правильном форматировании, которое потерялось, потому что тэг "code" забыл поставить А> Эт вы написали только потому что в любом случае нужно возразить.
Да уж, только и делаю, что вам возражаю
S>>В данном (и не только в данном) случае "читабельность" абсолютно объективна. Это скажет любой разумный человек.
Вы так говорите специально, чтобы я либо признал себя неразумным, либо с вами согласился?
S>>Даже если отбросить элементарную громоздкость кода и трезво оценить читабельность.
По каким критериям громоздкость оценивать будем?
А>Скажем просматривает человек ваш код (я всё же думаю что реальный код будет немного более сложнее, не так примитивен) и видит.
А>ToContinue = false; А>break; А>он ищет глазами конец цикла ... А>"- ура, нашёл " А>но там он видит А>if(!ToContinue) break; А>Ну ничего. Он ищет следующий конец цикла. А>"- ура, нашёл " А>но там А>if(!ToContinue) break; А>Тут он начинает вспоминать "хорошими словами" того, кто это писал.
Не надо глазами искать. Надо F3 нажимать (Find Next)
А>Он ищет следующий конец цикла. А>Уже без особой радости и с подозрением он его находит. А>И что он видит? Правильно А>if(!ToContinue) break; А>И он уже готов убить того, кто это писал. А>С трудом совладав с чувствами он всё же находит в себе силы проюолжить поиски. А>И о счастье, вот оно избавлениею
А что же вы хотели, с циклом вложенности 4? Это вам не шуточки. Я за восемь лет ни одного цикла вложенностью 4 не написал, написал пару циклов вложенности 3. Раз в восемь лет можно и напрячься, не находите?
А>Что же происходит если человек видит goto. А>- Ё моё, кто это писал, это же не структурное пр-е А>Но тем неменее он переваривает отвращение и просто находит метку ... находит он её быстро, потому что она одна большими буквами и с жирным коментарием.
Да-да. Находит, чтобы сразу стереть и написать без goto . Я бы именно так и сделал.
А>И потом, если читабельность это дело субъективное, нто из-за чего весь сыр бор? Ведь главный минус (и практически единственный) goto это снижение читабельности при его злоупотреблении. Вы когда нибудь видели старые большие программы на Байсике или Фортране? Это то, что называеться Write only code. Это действительно ужас, невозможно понять
Ну и что? То, что код Write only — не делает чести его разработчикам.
А>куда какие переходы и почему. А>Есть конечно другой негативный аспект goto. Это так называемое нарушение логики программы. Ну то есть нелогичный оператор, не имеющий отношение к логике и выполняющий просто навигацию по коду. Но это из разряда чистой филисофии не связанной с практикой. В данном случае невозможно ненарушить логику. Суть в том что нужно завершить итеративный процесс ... но "логичные" операторы языка не позволяют это сделать сразу. А все извращения с поступенчатым выходом из циклов с помощью флажка есть так же не имеют под собой алгоритмической логики ... они не несут смысловой логической нагрузки. Суть в том что надо выйти из цыклов и для реализации этого вы пишите длинную последовательность операций которая сводиться к простой новигации по коду с целью достичь нужной точки, при этом затрачиваються как вычислительные ресурсы так и память, вместо того что бы зделать goto, cуть котрого в простом изменении указателя команд.
Ну, про траты вычислительных ресурсов и памяти я сказал. Оценить-то все равно не сможете.
А>Я вас убедил? Неужели всё это я писал зря .
А что вы хотите? Чтобы я начал писать goto? "Скорее небо упадет на Землю и Дунай потечет в другую сторону" ((c) турки в ответ на ультиматум Суворова).
А>>>только что б не страшный goto S>>А что, этого мало? А>Так что в нём страшного?
Вы же сами и написали, чего. См.выше, читайте начиная с "Есть конечно другой негативный аспект goto"
А>>>несмотря на то что применение goto здесь выгодно во всех отношениях. S>>Не вижу никаких выгод. Что мне дает goto, кроме головной боли? А>У вас что компьютер пронзительно пищит на строчке goto ... так его
Упражняемся в остроумии? Как же комьютер может определить наличие у меня на экране строчки goto?
S>>Производительность не упоминать без численной оценки и описания способов измерения. А>Ну такты можно посчитать ))) без учёта оптимизации )))
Считайте. Результатами поделИтесь.
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[19]: Изменения в MFC 7.0/7.1
От:
Аноним
Дата:
03.06.03 22:08
Оценка:
Здравствуйте, Serguei666, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
S>>>В данном (и не только в данном) случае "читабельность" абсолютно объективна. Это скажет любой разумный человек. S>Вы так говорите специально, чтобы я либо признал себя неразумным, либо с вами согласился?
Нет, как вы заметили ниже и в другом письме я привёл способ оценки читабельности.
Она объективна и это факт. В столь любимом вашем институте нам (да и вам, я уверен) говорили "Код пишеться не для компьютера, код пишеться для человека", то есть он должен быть легкочитаем. Как же это может быть .. если это понятие субъективное? Что и требовалось доказать. И надо сказать что goto в большинстве случаев этому злейший враг, но далеко не всегда иногда это лучший выбор.
S>>>Даже если отбросить элементарную громоздкость кода и трезво оценить читабельность. S>По каким критериям громоздкость оценивать будем?
Я уте уже написал и повторяться не буду. А>>Скажем просматривает человек ваш код (я всё же думаю что реальный код будет немного более сложнее, не так примитивен) и видит.
А>>ToContinue = false; А>>break; А>>он ищет глазами конец цикла ... А>>"- ура, нашёл " А>>но там он видит А>>if(!ToContinue) break; А>>Ну ничего. Он ищет следующий конец цикла. А>>"- ура, нашёл " А>>но там А>>if(!ToContinue) break; А>>Тут он начинает вспоминать "хорошими словами" того, кто это писал. S>Не надо глазами искать. Надо F3 нажимать (Find Next)
Искать по F3 скобки? Оригинально-с Эт точно нельзя назвать продвинутым средством навигации по коду. Там в промежутке может быть много скобок и надо ещё оценить какая нужная, а это не просто сделать когда её пара уже скрылась за горизонтом .
А>>Он ищет следующий конец цикла. А>>Уже без особой радости и с подозрением он его находит. А>>И что он видит? Правильно А>>if(!ToContinue) break; А>>И он уже готов убить того, кто это писал. А>>С трудом совладав с чувствами он всё же находит в себе силы проюолжить поиски. А>>И о счастье, вот оно избавлениею S>А что же вы хотели, с циклом вложенности 4? Это вам не шуточки. Я за восемь лет ни одного цикла вложенностью 4 не написал, написал пару циклов вложенности 3. Раз в восемь лет можно и напрячься, не находите?
Ну это вполне реально. Мне покрайней мере часто приходиться писать такие конструкции, по крайней мере это значительно реальне 200 операторов m_Val=Val.
А>>Что же происходит если человек видит goto. А>>- Ё моё, кто это писал, это же не структурное пр-е А>>Но тем неменее он переваривает отвращение и просто находит метку ... находит он её быстро, потому что она одна большими буквами и с жирным коментарием. S>Да-да. Находит, чтобы сразу стереть и написать без goto . Я бы именно так и сделал.
Я не сомневаюсь, эт что б следующему чтецу свинью подложить
А>>И потом, если читабельность это дело субъективное, нто из-за чего весь сыр бор? Ведь главный минус (и практически единственный) goto это снижение читабельности при его злоупотреблении. Вы когда нибудь видели старые большие программы на Байсике или Фортране? Это то, что называеться Write only code. Это действительно ужас, невозможно понять S>Ну и что? То, что код Write only — не делает чести его разработчикам.
Безусловно. Я это привлё для того, что бы показать истинные причины неприятия goto.
А>>куда какие переходы и почему. А>>Есть конечно другой негативный аспект goto. Это так называемое нарушение логики программы. Ну то есть нелогичный оператор, не имеющий отношение к логике и выполняющий просто навигацию по коду. Но это из разряда чистой филисофии не связанной с практикой. В данном случае невозможно ненарушить логику. Суть в том что нужно завершить итеративный процесс ... но "логичные" операторы языка не позволяют это сделать сразу. А все извращения с поступенчатым выходом из циклов с помощью флажка есть так же не имеют под собой алгоритмической логики ... они не несут смысловой логической нагрузки. Суть в том что надо выйти из цыклов и для реализации этого вы пишите длинную последовательность операций которая сводиться к простой новигации по коду с целью достичь нужной точки, при этом затрачиваються как вычислительные ресурсы так и память, вместо того что бы зделать goto, cуть котрого в простом изменении указателя команд. S>Ну, про траты вычислительных ресурсов и памяти я сказал. Оценить-то все равно не сможете.
НУ вы же не станете отрицать что они больше и под флаг таки нужна физическая или регистровая память и при этом абсолютно неоправдано?
А>>Я вас убедил? Неужели всё это я писал зря . S>А что вы хотите? Чтобы я начал писать goto? "Скорее небо упадет на Землю и Дунай потечет в другую сторону" ((c) турки в ответ на ультиматум Суворова).
Да нет, это не реально.
Я лишь хочу, что бы вы перестали считать наличие goto признаком низкой квалификации ... так же как про открытые атребуты в ООП.
А>>>>только что б не страшный goto S>>>А что, этого мало? А>>Так что в нём страшного? S>Вы же сами и написали, чего. См.выше, читайте начиная с "Есть конечно другой негативный аспект goto"
Я же сказал, что это читая философия ... то есть из области чистых идей не несущих ничего ценного в наш материальный мир. Вы же укланяясь от goto нарушаете логику работы программы ещё более извращённым и нелепым образом.
А>>>>несмотря на то что применение goto здесь выгодно во всех отношениях. S>>>Не вижу никаких выгод. Что мне дает goto, кроме головной боли? А>>У вас что компьютер пронзительно пищит на строчке goto ... так его S>Упражняемся в остроумии? Как же комьютер может определить наличие у меня на экране строчки goto?
Догадаеться! Всё, всё больше шутить не буду.
S>>>Производительность не упоминать без численной оценки и описания способов измерения. А>>Ну такты можно посчитать ))) без учёта оптимизации ))) S>Считайте. Результатами поделИтесь.
Признаюсь честно ВЛОМ. Профайлера хорошего под рукой нет а за справочником по командам процессора Intel идти тоже не хочеться. Большого проигрыша здесь не будет, просто он неоправдан, и это не самая большая роблема этого кода.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Serguei666, Вы писали:
S>>Здравствуйте, Аноним, Вы писали:
S>>>>В данном (и не только в данном) случае "читабельность" абсолютно объективна. Это скажет любой разумный человек. S>>Вы так говорите специально, чтобы я либо признал себя неразумным, либо с вами согласился? А>Нет, как вы заметили ниже и в другом письме я привёл способ оценки читабельности. А>Она объективна и это факт.
Нет, не объективна, и это тоже факт
Иногда полезно для поднятия читабельности количествои строк увеличивать — ну, делать там пустые строку, переносы, комментарии писать. Так что ваш способ оценки — "чем меньше строк, тем лучше", не подходит.
А>В столь любимом вашем институте нам (да и вам, я уверен) говорили "Код пишеться не для компьютера, код пишеться для человека", то есть он должен быть легкочитаем. Как же это может быть .. если это понятие субъективное? Что и требовалось доказать. И надо сказать что goto в большинстве случаев этому злейший враг, но далеко не всегда иногда это лучший выбор.
Иногда — это как часто? Мне за 8 лет ни разу не пришлось этим выбором пользоваться. И не придется. Вывод: goto не нужен. Как вы выражаетесь — "и это факт"
Уж если на институт будем ссылаться, то нам там прямо говорили — goto не использовать. "Что и требовалось доказать"
S>>>>Даже если отбросить элементарную громоздкость кода и трезво оценить читабельность. S>>По каким критериям громоздкость оценивать будем? А>Я уте уже написал и повторяться не буду.
Понятно. Прочитал. Моя оценка вашего критерия — см. выше
А>>>Скажем просматривает человек ваш код (я всё же думаю что реальный код будет немного более сложнее, не так примитивен) и видит.
А>>>Тут он начинает вспоминать "хорошими словами" того, кто это писал. S>>Не надо глазами искать. Надо F3 нажимать (Find Next) А>Искать по F3 скобки?
Не по скобкам. Искать слово "ToContinue"
S>>А что же вы хотели, с циклом вложенности 4? Это вам не шуточки. Я за восемь лет ни одного цикла вложенностью 4 не написал, написал пару циклов вложенности 3. Раз в восемь лет можно и напрячься, не находите? А>Ну это вполне реально. Мне покрайней мере часто приходиться писать такие конструкции, по крайней мере это значительно реальне 200 операторов m_Val=Val.
Каждый занимается своим делом.
А>>>Что же происходит если человек видит goto. А>>>- Ё моё, кто это писал, это же не структурное пр-е А>>>Но тем неменее он переваривает отвращение и просто находит метку ... находит он её быстро, потому что она одна большими буквами и с жирным коментарием. S>>Да-да. Находит, чтобы сразу стереть и написать без goto . Я бы именно так и сделал. А>Я не сомневаюсь, эт что б следующему чтецу свинью подложить
Не, это чтобы убрать свинью, положенную предыдушим писателем
А>>>И потом, если читабельность это дело субъективное, нто из-за чего весь сыр бор? Ведь главный минус (и практически единственный) goto это снижение читабельности при его злоупотреблении. Вы когда нибудь видели старые большие программы на Байсике или Фортране? Это то, что называеться Write only code. Это действительно ужас, невозможно понять S>>Ну и что? То, что код Write only — не делает чести его разработчикам. А>Безусловно. Я это привлё для того, что бы показать истинные причины неприятия goto.
Истинные причины — нас так в институте учили. Ни Бейсиковским, ни с Фортрановсим кодом я близко не сталкивался.
А>>>куда какие переходы и почему. А>>>Есть конечно другой негативный аспект goto. Это так называемое нарушение логики программы. Ну то есть нелогичный оператор, не имеющий отношение к логике и выполняющий просто навигацию по коду. Но это из разряда чистой филисофии не связанной с практикой. В данном случае невозможно ненарушить логику. Суть в том что нужно завершить итеративный процесс ... но "логичные" операторы языка не позволяют это сделать сразу. А все извращения с поступенчатым выходом из циклов с помощью флажка есть так же не имеют под собой алгоритмической логики ... они не несут смысловой логической нагрузки. Суть в том что надо выйти из цыклов и для реализации этого вы пишите длинную последовательность операций которая сводиться к простой новигации по коду с целью достичь нужной точки, при этом затрачиваються как вычислительные ресурсы так и память, вместо того что бы зделать goto, cуть котрого в простом изменении указателя команд. S>>Ну, про траты вычислительных ресурсов и памяти я сказал. Оценить-то все равно не сможете. А>НУ вы же не станете отрицать что они больше и под флаг таки нужна физическая или регистровая память и при этом абсолютно неоправдано?
То, что нужна память, орицать не буду. То, что неоправданно — буду.
Все оправданно. Вы занимаете лишние 4 байта (или сколько там переменная ToContinue занимает) из 512 Мегов памяти (у меня даже разрядности калькулятора не хватит, чтобы посчитать, как это мало) в течении очень малой доли секунды (потому что переменная на стеке), а в результате получаете код без goto. Разве это не стоит того? По-моему, еще как стоит.
Чай не XX век на дворе, не на ассемблере пишем. Вона винт купил — 120 Гиг. У нас в институте компы были с винтами 20 мег. Та же фигня и с памятью. Кого колышат какие-то 4 байта, если взамен получается программа, написанная правильно?
А>>>Я вас убедил? Неужели всё это я писал зря . S>>А что вы хотите? Чтобы я начал писать goto? "Скорее небо упадет на Землю и Дунай потечет в другую сторону" ((c) турки в ответ на ультиматум Суворова). А>Да нет, это не реально.
Что небо на землю упадет? Скорее всего нет, конечно. В это и была изюминка такого ответа.
А>Я лишь хочу, что бы вы перестали считать наличие goto признаком низкой квалификации ... так же как про открытые атребуты в ООП.
Не перестану Потому что это и есть признаки низкой квалификации. Такие программисты понапишут, а я сиди исправляй. Думаете, море удовольствия?
А>>>>>только что б не страшный goto S>>>>А что, этого мало? А>>>Так что в нём страшного? S>>Вы же сами и написали, чего. См.выше, читайте начиная с "Есть конечно другой негативный аспект goto" А>Я же сказал, что это читая философия ... то есть из области чистых идей не несущих ничего ценного в наш материальный мир. Вы же укланяясь от goto нарушаете логику работы программы ещё более извращённым и нелепым образом.
Мой матераильный мир — это время, которое я провожу, исправляя чужие ошибки, в том числе и связанные с public переменными (от goto Бог миловал). Так что лучше их в зародыше задушить, научив народ писать как надо.
А>>>>>несмотря на то что применение goto здесь выгодно во всех отношениях. S>>>>Не вижу никаких выгод. Что мне дает goto, кроме головной боли? А>>>У вас что компьютер пронзительно пищит на строчке goto ... так его S>>Упражняемся в остроумии? Как же комьютер может определить наличие у меня на экране строчки goto? А>Догадаеться! А> Всё, всё больше шутить не буду. Это тоже типа шутка была.
А>Признаюсь честно ВЛОМ. Профайлера хорошего под рукой нет а за справочником по командам процессора Intel идти тоже не хочеться. Большого проигрыша здесь не будет, просто он неоправдан, и это не самая большая роблема этого кода.
Так я об этом. Большего проигрыша не будет. Тогда что мы экономим, уродуя программу goto и public переменными?
Ест всеми признанные классические соображения, что гото —
это плохо, так как неструктурно,
но разумно его применять в только в одном случае выходи из большого числа вложенных цклов.
Все согласились уже с этим.
Код должен быть читаем, комментированным,понятным
раз люди понимают похоже то и читабельность обьективна,
как Пушкин поэт и обезьяна- не поэт.
Потому что вы будете в следующий раз ошибки в нем искать,
парсировать, линковать и прочее.
S>>>>>В данном (и не только в данном) случае "читабельность" абсолютно объективна. Это скажет любой разумный человек. S>>>Вы так говорите специально, чтобы я либо признал себя неразумным, либо с вами согласился? А>>Нет, как вы заметили ниже и в другом письме я привёл способ оценки читабельности. А>>Она объективна и это факт. S>Нет, не объективна, и это тоже факт
Слушайте, ну это не серьёзно просто. Помоему я вполне убедительно доказал её объективность и я думаю что вы это поняли ... ну зам же возражать ради возражения. S>Иногда полезно для поднятия читабельности количествои строк увеличивать — ну, делать там пустые строку, переносы, комментарии писать. Так что ваш способ оценки — "чем меньше строк, тем лучше", не подходит.
Пустые строки и коментарии я к коду не отношу. И потом где я писал о связи громоздкости и читабельность? Я рассматривал эти понятия отдельно, но всё же лишний код затрудняет чтение исходников и помоему привёл очень яркий пример и дело тут не в 4ох циклах, даже при 2ух циклах goto уместен.
S>Уж если на институт будем ссылаться, то нам там прямо говорили — goto не использовать. "Что и требовалось доказать"
Странные у вас преподы были, наверно они в книжке прочитали "goto — плохо", потом сказали вам, но не потрудились объяснить почему. Если бы этого оператор был совсем не нужен, его бы небыло. Ведь даже новомодный C# и тот без goto не обошёлся.
А>>>>И потом, если читабельность это дело субъективное, нто из-за чего весь сыр бор? Ведь главный минус (и практически единственный) goto это снижение читабельности при его злоупотреблении. Вы когда нибудь видели старые большие программы на Байсике или Фортране? Это то, что называеться Write only code. Это действительно ужас, невозможно понять S>>>Ну и что? То, что код Write only — не делает чести его разработчикам. А>>Безусловно. Я это привлё для того, что бы показать истинные причины неприятия goto. S>Истинные причины — нас так в институте учили. Ни Бейсиковским, ни с Фортрановсим кодом я близко не сталкивался.
Ну что это. Я же говорил об истинных причинах непрятия goto, а не о том, почему вы его неиспользовали.
А>>>>куда какие переходы и почему. А>>>>Есть конечно другой негативный аспект goto. Это так называемое нарушение логики программы. Ну то есть нелогичный оператор, не имеющий отношение к логике и выполняющий просто навигацию по коду. Но это из разряда чистой филисофии не связанной с практикой. В данном случае невозможно ненарушить логику. Суть в том что нужно завершить итеративный процесс ... но "логичные" операторы языка не позволяют это сделать сразу. А все извращения с поступенчатым выходом из циклов с помощью флажка есть так же не имеют под собой алгоритмической логики ... они не несут смысловой логической нагрузки. Суть в том что надо выйти из цыклов и для реализации этого вы пишите длинную последовательность операций которая сводиться к простой новигации по коду с целью достичь нужной точки, при этом затрачиваються как вычислительные ресурсы так и память, вместо того что бы зделать goto, cуть котрого в простом изменении указателя команд. S>>>Ну, про траты вычислительных ресурсов и памяти я сказал. Оценить-то все равно не сможете. А>>НУ вы же не станете отрицать что они больше и под флаг таки нужна физическая или регистровая память и при этом абсолютно неоправдано? S>То, что нужна память, орицать не буду. То, что неоправданно — буду.
Я даже нестал читать что вы там писали про мегабаты? Просто нет никкой объективной причины тратить эти, пусть даже небольшие ресурсы.
S>Чай не XX век на дворе, не на ассемблере пишем. Вона винт купил — 120 Гиг. У нас в институте компы были с винтами 20 мег. Та же фигня и с памятью. Кого колышат какие-то 4 байта, если взамен получается программа, написанная правильно?
А правильно, это значит без goto? Да? ТОлько вы даже не пытаетесь понять почему goto это не правильно ...вам просто сказали. А>>>>Я вас убедил? Неужели всё это я писал зря . S>>>А что вы хотите? Чтобы я начал писать goto? "Скорее небо упадет на Землю и Дунай потечет в другую сторону" ((c) турки в ответ на ультиматум Суворова). А>>Да нет, это не реально. S>Что небо на землю упадет? Скорее всего нет, конечно. В это и была изюминка такого ответа. А>>Я лишь хочу, что бы вы перестали считать наличие goto признаком низкой квалификации ... так же как про открытые атребуты в ООП. S>Не перестану Потому что это и есть признаки низкой квалификации. Такие программисты понапишут, а я сиди исправляй. Думаете, море удовольствия?
Я не знаю чего они понапишасли у вас там. А переписывать код с goto на код без него, это действительно мало удовольствия, но зачем? Наверно это вам нравится.
Я вот поискал по исходникам VC и обнаружил около 40 файлов с goto, а сколько открытых атребутов в MFC, ужас. Вы хотите сказать что Мелкомягкие отваливают такие бабки неквалифицырованным программерам?
А>>>>Так что в нём страшного? S>>>Вы же сами и написали, чего. См.выше, читайте начиная с "Есть конечно другой негативный аспект goto" А>>Я же сказал, что это читая философия ... то есть из области чистых идей не несущих ничего ценного в наш материальный мир. Вы же укланяясь от goto нарушаете логику работы программы ещё более извращённым и нелепым образом. S>Мой матераильный мир — это время, которое я провожу, исправляя чужие ошибки, в том числе и связанные с public переменными (от goto Бог миловал). Так что лучше их в зародыше задушить, научив народ писать как надо.
Так какие могут быть ошибки с goto?
А>>Признаюсь честно ВЛОМ. Профайлера хорошего под рукой нет а за справочником по командам процессора Intel идти тоже не хочеться. Большого проигрыша здесь не будет, просто он неоправдан, и это не самая большая роблема этого кода. S>Так я об этом. Большего проигрыша не будет. Тогда что мы экономим, уродуя программу goto и public переменными?
Нет, дело именно в том (и это я не раз аргументировал, только вы не хотите слушать), что уродуеться программа и траттятся ресурсы только ради того, что бы соответстоввать некоторым догматам, которым вас научили в институте.
Даже самую простую задачу можно сделать невыполнимой, если провести достаточное количество совещаний