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 идти тоже не хочеться. Большого проигрыша здесь не будет, просто он неоправдан, и это не самая большая роблема этого кода.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.