Re[4]: C# goto, нужно ли избегать
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.04.11 18:25
Оценка:
Здравствуйте, night beast, Вы писали:

VD>>Мне кажется надо подкрутить движок сайта... чтобы минус от minorlogic (полученный вне форума С++) заменялся бы на 3, нет, 5 плюсов!


NB>это называется административный ресурс, да?

NB>

Ну, просвещенная Европа называет это термином "справедливость" .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: C# goto, нужно ли избегать
От: night beast СССР  
Дата: 14.04.11 18:36
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Мне кажется надо подкрутить движок сайта... чтобы минус от minorlogic (полученный вне форума С++) заменялся бы на 3, нет, 5 плюсов!


NB>>это называется административный ресурс, да?

NB>>

VD>Ну, просвещенная Европа называет это термином "справедливость" .


скорее "демократия". справедливость -- это наш, российский термин.
Re[4]: C# goto, нужно ли избегать
От: WolfHound  
Дата: 14.04.11 19:04
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Если серьезно, то ты не прав, конечно. Язык не тупой (есть множество тупее).

Наличие более тупых языков не отменяет того факта что данный язык туп.

VD>Он просто не очень удобный. В данном случае он просто провоцирует на говнокод. Но это свойство любого приемущественно императивного языка. В том числе Явы, С++, С, Паскаля и т.п.

Так они все тупые.
Тут все просто. Чем чаще язык провоцирует на говнокод тем он тупее.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: C# goto, нужно ли избегать
От: Философ Ад http://vk.com/id10256428
Дата: 14.04.11 19:04
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Философ, Вы писали:


Ф>>Если можете предложить лучшее решение — предлагайте.



VD>Мне казалось, что вопрос с goto был закрыт..

Как выяснилось, мышление у меня так устроено, что "изобретая" алгоритм,
я мыслю с вот этим самым неугодным словом. Только потом переписываю его выкидывая. Это тот самый случай.


VD>Я не буду приводить примера того как этот код можно было бы переписать без goto. Я просто скажу что твой код — говно. Или как его любят называть в народе — говнокод.


Только из-за goto? Вероятно так же из-за того, что определена "count", которая сейчас не используется. Что ещё?

VD>Читать его сложно и уныло.

Там вроде нечего читать. Кода тут кот наплакал.


VD>устранить в этом говнокоде goto

Это не продакшн код, скорее "отрывочные мысли на черновике".

VD>За долгие годы программирования я для себя вывел формулу написания хорошего кода — надо писать код думая о том как ты будешь объяснять его окружающим.

Мне никогда не пиходилось описывать окружающим отдельные функции или методы. А вот рассказывать зачем этот метод/функция/класс нужен(а), почему он(а) был(а) написан(а), а в худшем случае "что именно оно делает".

VD>Отличным подспорьем в написании понятного кода является изучение функционального подхода.

Может быть когда-нибудь я засяду за "функциональщину", однако особого смысла в этом не вижу.

VD>В общем, не борись с goto.

Следует ли это понимать, что можно не подчищать прототипы?

VD>Начни с того, что приведи здесь внятно описание задачи на естественном (русском) языке.

Здесь был приведён отрывок метода, обходящего дерево, составленное из класса CEntity. Это очередной ORM, и обход дерева нужен для генерации предложения select.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: C# goto, нужно ли избегать
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.04.11 22:03
Оценка: +3
Здравствуйте, Философ, Вы писали:

VD>>Я не буду приводить примера того как этот код можно было бы переписать без goto. Я просто скажу что твой код — говно. Или как его любят называть в народе — говнокод.


Ф>Только из-за goto?


Нет. Главное не то, что есть в коде, а того что в нем нет. В нем не видно ясной мысли.

Ф>Вероятно так же из-за того, что определена "count", которая сейчас не используется. Что ещё?


Это детали, хотя и нехороши.

VD>>Читать его сложно и уныло.

Ф>Там вроде нечего читать. Кода тут кот наплакал.

Вот именно. Кода мало, а на то чтобы понять что код делает требуется много времени и сил. Это и дает основания называть код плохим.

VD>>За долгие годы программирования я для себя вывел формулу написания хорошего кода — надо писать код думая о том как ты будешь объяснять его окружающим.

Ф>Мне никогда не пиходилось описывать окружающим отдельные функции или методы.

Значит пришло время попробовать. К тому же это нужно представлять, а не делать на самом деле. Не получается представлять — пиши комментарии. Причем так чтобы и дурак понял. Как только ты начнешь формулировать мысли, так тотчас поймешь как переписать код чтобы его было проще объяснять.

Ф>А вот рассказывать зачем этот метод/функция/класс нужен(а), почему он(а) был(а) написан(а), а в худшем случае "что именно оно делает".


А у тебя не было ощущения, что структура классов тебе более менее нравится, а код отдельных методов вызывает тошноту?

VD>>Отличным подспорьем в написании понятного кода является изучение функционального подхода.

Ф>Может быть когда-нибудь я засяду за "функциональщину", однако особого смысла в этом не вижу.

Ты не ищи смысл. Знания и опыт штуки такие... не ясно зачем они нужны пока их нет. А когда есть, то и вопросов не возникает.

Я сам не так давно освоил ФП. Раньше не понимал как жить без breake. Теперь зачастую бывает так что в программе нет ни одного return-а. И код от этого только понятнее становится.

VD>>В общем, не борись с goto.

Ф>Следует ли это понимать, что можно не подчищать прототипы?

Нет. Просто когда подчищаешь, надо делать акцент не на тактике (борьбе с отдельными проявлениями), а не стратегии — приведении кода в понятный вид. При этом goto у тебя исчезнут сами собой.

VD>>Начни с того, что приведи здесь внятно описание задачи на естественном (русском) языке.

Ф>Здесь был приведён отрывок метода, обходящего дерево, составленное из класса CEntity. Это очередной ORM, и обход дерева нужен для генерации предложения select.

Тогда я тебя удивлю. В этой задаче не только goto не нужен, но и циклы.

Такие задачи решаются двумя способами:
1. Созданием рекурсивной фунции обходящей дерево. При этом конкретный алгоритм можно передавать в виде ссылки на функцию.
2. Созданием итератором разворачивающим перебор дерева в последвовательность. И затем, перебором последовательности в одном единственном foreach.

Соответственно грязь которая появилась в твоем коде связана с тем, что ты смешал код отвечающий за обход дерева (перебор веток) с кодом прикладной задачи (для которой и нужен обход дерева).

В прочем, сама задача — создание ОРМ-ов сама по себе неблагодарная. Ее уже сто раз решали. Лучше взять одно из решений и допилить напильником.

Лично я прдерживаюсь мнения, что данные в БД имеют не объектную природу и стало быть работать с ними в объектном стиле не следует. По сему нужно взять легкий ОРМ вроде BLToolkit-а и писать логику обработки данных.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: C# goto, нужно ли избегать
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.04.11 22:05
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Наличие более тупых языков не отменяет того факта что данный язык туп.


Ты как всегда излишне категоричен. Если довести твои мысли до логического конца, то все существующие языки тупы, так как всегда можно придумать более продвинутый язык.

VD>>Он просто не очень удобный. В данном случае он просто провоцирует на говнокод. Но это свойство любого приемущественно императивного языка. В том числе Явы, С++, С, Паскаля и т.п.

WH>Так они все тупые.
WH>Тут все просто. Чем чаще язык провоцирует на говнокод тем он тупее.

Согласен. Чем чаще больше язык провоцирует на грязь, тем он хуже. Но тупость — это характеристика людей.

Например, в этой задаче — объход дерева — и на Шарпе можно было бы создать итератор или ФВП и с их помощью написать код чисто и красиво.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: C# goto, нужно ли избегать
От: Sinix  
Дата: 15.04.11 00:10
Оценка: 2 (2) +1
Здравствуйте, WolfHound, Вы писали:

WH>Тут все просто. Чем чаще язык провоцирует на говнокод тем он тупее.

А можно с троллингом в КСВ?

Блин, почему в любую тему вечно влазят фанаты-маргиналы (без обид) и начинают доказывать окружающим, что у них длиннее они знают, как лучше? Почему этим не занимаются васиководы? Почему сишники и яваисты спокойно занимаются своим делом и троллят в профильной ветке, не засирая всё окружающее? Вот нафига так делать?

Неужели не очевидно, какая будет ответная реакция?
Re[6]: C# goto, нужно ли избегать
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.04.11 00:22
Оценка:
Здравствуйте, Sinix, Вы писали:

WH>>Тут все просто. Чем чаще язык провоцирует на говнокод тем он тупее.

S>А можно с троллингом в КСВ?

Уверен, что он не торллит, а реально так думает. Просто он очень категоричен и резок на высказывания. Однако, если "тупее" заменить на "хуже" или "ниже уровнем", то я, пожалуй, соглашусь.

S>Блин, почему в любую тему вечно влазят фанаты-маргиналы (без обид)и начинают доказывать окружающим, что у них длиннее они знают, как лучше?


Блин, почему в любую тему вечно влазят фанаты-говнокодерв (без обид) и начинают доказывать окружающим, что у них длиннее они знают, как лучше?

S>Почему этим не занимаются васиководы?


Может потому что в теме не секут?

S>Почему сишники и яваисты спокойно занимаются своим делом и троллят в профильной ветке, не засирая всё окружающее? Вот нафига так делать?


А ты себя то к кому причисляешь? Вот WolfHound писал (а может и пишет сейчас) на С++ не мало лет. Писал он и на C#. Мне это достоверно известно. За васик не скажу, но он в последних версиях мало чем от шарпа отличается, так что можно и его зачесть.

Думаешь почему WolfHound не причисляет себя к сиплюсплюсниками или шарпистам?

S>Неужели не очевидно, какая будет ответная реакция?


Ну, это зависит от человека. Если он неадекватен, то неадекватная реакция может быть и на вполне безобидные высказывания.

Так что ты это... Если хочешь чтобы с тобой разговаривали уважительно, и сам веди разговор уважительно.

WolfHound твою маргинальность твоей личность не обсуждал. Вот и ты обсуждай его высказывания, а не его самого. Не согласен с ним? Докажи на примере.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: C# goto, нужно ли избегать
От: Sinix  
Дата: 15.04.11 01:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Уверен, что он не торллит, а реально так думает. Просто он очень категоричен и резок на высказывания. Однако, если "тупее" заменить на "хуже" или "ниже уровнем", то я, пожалуй, соглашусь.

Так я не спорю, немерл весьма продвинут по фичам. Лучше/хуже утверждать не буду, это слишком индивидуальное дело. Раздражает не превосходство убер-технологии, раздражает агрессивность большинства евангелистов и позиция "ты не с нами — ты говно". Причём, как правило, даже без попытки разобраться в проблемах того, кому "помогают".

VD>Блин, почему в любую тему вечно влазят фанаты-говнокодерв (без обид) и начинают доказывать окружающим, что у них длиннее они знают, как лучше?

А можно примеры? Я вот постоянных тролль-говнокодеров не припомню, а примеров когда интересная сначала тема скатывалась в разборки lin vs win / mac vs все / nemerle vs говнокодеры можно набрать десятки. И, поскольку действующие лица всё те же, интереса читать одни и те же набросы по пятому кругу никакого нет.

S>>Почему этим не занимаются васиководы?

VD>Может потому что в теме не секут?
Ну, уж в Васике они разбираются наверно? А разбираться в теме, против которой воюешь, наоборот, вредно — тяжелее пропускать мимо ушей аргументы

VD>А ты себя то к кому причисляешь?

А вот хз. По работе — дотнет + MS SQL. По необходимости — что угодно, начиная с правки старого vba-софта и заканчивая сеткой под ключ. Хоть качество и будет, мнэээ... фиговато Грабли, в основном, не в инструменте, а в руках.

VD>Думаешь почему WolfHound не причисляет себя к сиплюсплюсниками или шарпистам?



S>>Неужели не очевидно, какая будет ответная реакция?

VD>Ну, это зависит от человека. Если он неадекватен, то неадекватная реакция может быть и на вполне безобидные высказывания.
Не, просто в ответ на агрессивное "всё, что вы делаете — отстой" конструктива заведомо не будет. Так же, как с сетевыми продавцами и прочими свидетелями иеговы.
Re[8]: C# goto, нужно ли избегать
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.04.11 03:18
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Так я не спорю, немерл весьма продвинут по фичам.


В данном случае вместо немерла мог выступать любой ФЯ. Например, F#.

S>Лучше/хуже утверждать не буду, это слишком индивидуальное дело. Раздражает не превосходство убер-технологии, раздражает агрессивность большинства евангелистов и позиция "ты не с нами — ты говно".


Из каких его слов проистекает твой вывод?
Человек показал правильный, с его точки зрения, подход на языке который он знает. Скажи спасибо, что этот язык так похож на те что ты знаешь. Другой бы мог задвинуть пример на Хаскеле (сразу оговариваюсь... против Хаскелея ничего не имею)

S>Причём, как правило, даже без попытки разобраться в проблемах того, кому "помогают".


В чем не разобрался WolfHound? И как должен был выглядеть его ответ, если бы он разобрался бы?

VD>>Блин, почему в любую тему вечно влазят фанаты-говнокодерв (без обид) и начинают доказывать окружающим, что у них длиннее они знают, как лучше?

S>А можно примеры?

Я вообще-то показал тебе, что твои слова можно легким движением руки развернуть против тебя.

Твои слова не более чем гнилой, необоснованный наезд.

WolfHound показал то как он видит решение проблемы. Показал на том языке который хорошо знает. То что используемый в его ответе язык вызвал у тебя дискомфорт никто кроме тебя не виноват.

S>а примеров когда интересная сначала тема скатывалась в разборки lin vs win / mac vs все / nemerle vs говнокодеры можно набрать десятки.


Ну, так погляди чем ты занимаешься? Ты именно что скатываешь тему в этом неприличном направлении.

S>>>Почему этим не занимаются васиководы?

VD>>Может потому что в теме не секут?
S>Ну, уж в Васике они разбираются наверно?

Не могу за всех ответить. Но к теме это вряд ли относится.

S>А разбираться в теме, против которой воюешь, наоборот, вредно — тяжелее пропускать мимо ушей аргументы


Судя по тому какой дискомфорт тебе причиняет упоминание немерла (точнее даже не упоминание, а использование в примерах), похоже что ты именно по описанному тобой шаблону и действуешь. Может разумнее не раздражаться, а попробовать прислушаться к словам?

VD>>Думаешь почему WolfHound не причисляет себя к сиплюсплюсниками или шарпистам?

S>

Он знает все эти языки и потому не принадлежит к одному лагерю. Примеры же он дает на том языке который, в данном случае, позволят ему продемонстрировать более правильный подход. К сожалению, ни С++ ни C# необходимых возможностей не предоставляет.

Мне вот интересно, стало бы тебе легче если бы WolfHound привел бы пример на F#?

S>>>Неужели не очевидно, какая будет ответная реакция?

VD>>Ну, это зависит от человека. Если он неадекватен, то неадекватная реакция может быть и на вполне безобидные высказывания.
S>Не, просто в ответ на агрессивное "всё, что вы делаете — отстой" конструктива заведомо не будет. Так же, как с сетевыми продавцами и прочими свидетелями иеговы.

Агрессивный тут в основном ты. Про "вас всех" я тоже не слышал высказываний.
WolfHound назвал C# тупым языком. Казалось бы что с того, если ты не ассоциируешь язык с собой? К тому же это же язык! У него мозга нет. Так что тупым или остроумным он в принципе быть не может.

В общем, попробуй проигнорировать резкое высказывание и попытаться понять основной смысл сообщения WolfHound-а. В нем несомненно скрывается рациональное зерно. Рекурсивные функции действительно зачастую отлично заменяют циклы и могут спасать от необходимости использования как goto, так и break, continue и даже return.
Поверь — это полезная информация.

Ну, а осознав это ты, возможно, сможешь понять и резкость высказываний WolfHound-а.
Я периодически пишу на C# и частенько замечаю, что этот язык подталкивает меня на более грязное программирование.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: C# goto, нужно ли избегать
От: Sinix  
Дата: 15.04.11 04:37
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>В данном случае вместо немерла мог выступать любой ФЯ. Например, F#.

Угу. Но, повторюсь, орды хаскеллистов не набегают в каждый топик и не пиарят хаскель путём опускания всех окружающих.

S>>Лучше/хуже утверждать не буду, это слишком индивидуальное дело. Раздражает не превосходство убер-технологии, раздражает агрессивность большинства евангелистов и позиция "ты не с нами — ты говно".


VD>Из каких его слов проистекает твой вывод?

Так это неоднократно повторяется. Даже этот флейм начался с наброса

Но не на C#. Ибо он тупой очень.

Кроме того, я не собирался обвинять в агрессивной пропаганде исключительно немерлистов и, тем более, исключительно ув WolfHound. Если он воспринял мой первый пост как личный наезд, то очевидно, мне стоило вставить этот дисклаймер раньше. Неправ.

VD>Человек показал правильный, с его точки зрения, подход на языке который он знает. Скажи спасибо, что этот язык так похож на те что ты знаешь. Другой бы мог задвинуть пример на Хаскеле (сразу оговариваюсь... против Хаскелея ничего не имею)

Хмм... а что в хаскелле такого непонятного? Первоначально мозг ломается конеш, но потом особых вопросов не возникает вроде. Поскольку сам ничего серьёзного не писал, только переводил код, могу быть неправ.

S>>Причём, как правило, даже без попытки разобраться в проблемах того, кому "помогают".

VD>В чем не разобрался WolfHound? И как должен был выглядеть его ответ, если бы он разобрался бы?
См дисклаймер выше, я не собирался наезжать лично на WolfHound-а.

VD>Я вообще-то показал тебе, что твои слова можно легким движением руки развернуть против тебя.

VD>Твои слова не более чем гнилой, необоснованный наезд.
Аналогично, ваши можно трактовать как попытку личного наезда

VD>WolfHound показал то как он видит решение проблемы. Показал на том языке который хорошо знает. То что используемый в его ответе язык вызвал у тебя дискомфорт никто кроме тебя не виноват.


И в сотый раз я повторю, проблема — не в используемом инструменте, а в том, что он постоянно насильно пиарится, по поводу и без. В результате, каким бы крутым не был немерл/лин/мак/подставить нужное, каждый наброс закономерно оканчивается виртуальным переплёвыванием. Почему нельзя просто закинуть сампл и по возможности объяснить преимущества для товарища топикстартера? Зачем становиться в позу д'Артаньяна и опускать начинающего человека? Самоутверждение?

VD>Ну, так погляди чем ты занимаешься? Ты именно что скатываешь тему в этом неприличном направлении.

Ххех, т.е

Но не на C#. Ибо он тупой очень.
...
о что ты думаешь, что что-то знаешь — это от незнания
...
твой код — говно
...
они все тупые

— это конструктив?


VD>Судя по тому какой дискомфорт тебе причиняет упоминание немерла (точнее даже не упоминание, а использование в примерах), похоже что ты именно по описанному тобой шаблону и действуешь. Может разумнее не раздражаться, а попробовать прислушаться к словам?

Не, ну вот зачем наезжать? Плиз покажите хоть один пост, где я целенаправленно опускаю не только немерл — вообще любой язык.
Вот это
Автор: Sinix
Дата: 15.02.11

Немерл будет лаконичней, тут и спорить не о чем, но в продакшн в качестве основного языка я его не потащу, точно так же как f# и прочую эзотерику: мало ресурсов, малое community, никакого тулчайна. Для всякой вспомогательной мелочёвки — никаких проблем, но пока не припёрло.
...
Мдя, я предполагал, что будет короче и понятней, но не настолько же! Шикарно и спасибо

очевидно, крайнее раздражение?

Предлагаю закруглиться, тема действительно ушла не туда. Удачи!
Re[5]: C# goto, нужно ли избегать
От: Undying Россия  
Дата: 15.04.11 04:50
Оценка: 1 (1) :)
Здравствуйте, WolfHound, Вы писали:

WH>Ну тебе и флаг в руки. Перепиши на C#.


И в чем проблема? Анонимные делегаты в шарпе уже пять лет как имеются.

WH>Вот только там нет ни локальных функций ни оптимизации хвостовой рекурсии.


Зачем нерекурсивную задачу записывать в виде рекурсии? Наличие хвостовой рекурсии в решении как правило означает, что рекурсия для решения задачи нафиг не нужна.

зы
Приведенный тобой код, кстати, зело кошмарен, т.к. по нему совершенно не видно, что является результатом выполнения этого куска кода.
Re[6]: C# goto, нужно ли избегать
От: hardcase Пират http://nemerle.org
Дата: 15.04.11 05:00
Оценка:
Здравствуйте, Undying, Вы писали:

WH>>Вот только там нет ни локальных функций ни оптимизации хвостовой рекурсии.


U>Зачем нерекурсивную задачу записывать в виде рекурсии? Наличие хвостовой рекурсии в решении как правило означает, что рекурсия для решения задачи нафиг не нужна.


ТС где-то упоминал про обход дерева — типичная рекурсивная задача. Наличие одной лишь хвостовой рекурсии не является достаточным признаком переписывания кода в циклы.

U>зы

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

А что является результатом выполнения приведенного кода ТС-а?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: C# goto, нужно ли избегать
От: WolfHound  
Дата: 15.04.11 07:05
Оценка:
Здравствуйте, Undying, Вы писали:

U>И в чем проблема? Анонимные делегаты в шарпе уже пять лет как имеются.

Вот только они весь стек съедят.

U>Зачем нерекурсивную задачу записывать в виде рекурсии? Наличие хвостовой рекурсии в решении как правило означает, что рекурсия для решения задачи нафиг не нужна.

Вот только с рекурсиейй почемуто получилось короче чем без рекурсии.
И понятно что происходит. В отличии от той лапши которую тут предлагали.
Ты посмотри что народ творит. Они все как один вводят новый цикл только для того чтобы сделать break.
Код с goto и то понятнее в данном случае.

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

А что по коду в топиккастера понятно?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: C# goto, нужно ли избегать
От: WolfHound  
Дата: 15.04.11 07:05
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Ты как всегда излишне категоричен.

Я как всегда придельно честен и называю вещи своими именами.

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

Именно так я и думаю.
Тупняки немерла меня тоже порой раздражают. Но тупит он заметно меньше чем C#.

VD>Согласен. Чем чаще больше язык провоцирует на грязь, тем он хуже. Но тупость — это характеристика людей.

Игра словами мне не интерасна.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: C# goto, нужно ли избегать
От: Klapaucius  
Дата: 15.04.11 08:00
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Здесь был приведён отрывок метода, обходящего дерево, составленное из класса CEntity. Это очередной ORM, и обход дерева нужен для генерации предложения select.


А, обход дерева? В нормальных языках можно обойтись без goto.
Дописываем после определения типа дерева:
deriving (Functor, Foldable, Traversable)

Или, если тип (Tree) определен не в нашем коде:
deriving instance Functor Tree
deriving instance Foldable Tree
deriving instance Traversable Tree

Все, обход дерева готов.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[2]: C# goto, нужно ли избегать
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 15.04.11 08:18
Оценка: 1 (1)
Здравствуйте, andyag, Вы писали:

Так это просто трюк, который имитирует goto, только больше букв и отступов
Re[7]: C# goto, нужно ли избегать
От: Undying Россия  
Дата: 15.04.11 08:24
Оценка: 1 (1) -1
Здравствуйте, WolfHound, Вы писали:

U>>И в чем проблема? Анонимные делегаты в шарпе уже пять лет как имеются.

WH>Вот только они весь стек съедят.

В этой задаче не съедят, т.к. тут вообще рекурсия не нужна. А там где рекурсия нужна действительно, там хвостовая рекурсия не помощник.

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

WH>А что по коду в топиккастера понятно?

Твой код ничем не лучше кода топикстартера или варианта с while, такая же непонятная муть.
Re: C# goto, нужно ли избегать
От: Undying Россия  
Дата: 15.04.11 08:49
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Если можете предложить лучшее решение — предлагайте.


Порядок обработки объектов одного уровня в дереве имеет значение или в алгоритме такой порядок случайно получился?
Re[2]: C# goto, нужно ли избегать
От: Undying Россия  
Дата: 15.04.11 08:54
Оценка: :)
Здравствуйте, Undying, Вы писали:

U>Порядок обработки объектов одного уровня в дереве имеет значение или в алгоритме такой порядок случайно получился?


Если ответ — нет, не имеет, то ты мегашаман, т.к. задача решается с помощью одной очереди и одного while.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.