Форум: "Прочее";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
ВнизGoto in Delphi Найти похожие ветки
← →
Empleado © (2011-02-22 14:45) [0]Давно не встречал goto в коде Делфи.
System.pas(12460)
TMonitor = record...
function Enter(Timeout: Cardinal): Boolean; overload;
← →
clickmaker © (2011-02-22 15:09) [1]а где goto?
← →
DiamondShark © (2011-02-22 15:11) [2]Встретив goto, перекретись и сплюнь через левое плечо.
← →
TUser © (2011-02-22 15:31) [3]диавол искушает нас
← →
KilkennyCat © (2011-02-22 15:33) [4]а я за goto. я его использую.
а те, кто считает это некрасивым, фленову подобны.
← →
RWolf © (2011-02-22 15:37) [5]в повседневной жизни практически не нужно.
в некоторых случаях может повысить читабельность кода, как ни парадоксально — см. обсуждение: http://www.delphimaster.net/view/15-1273641886/all .
← →
Palladin © (2011-02-22 15:51) [6]
> в некоторых случаях может повысить читабельность кода
+1000500, за те единицы случаев использования я применял именно ради этого
← →
Anatoly Podgoretsky © (2011-02-22 15:54) [7]> KilkennyCat (22.02.2011 15:33:04) [4]
Изыди сатана!
← →
Empleado © (2011-02-22 16:29) [8]
> clickmaker © (22.02.11 15:09) [1]
> а где goto?
Sorry. Не подумал.
Delphi XE
begin
SpinCount := FSpinCount;
// Return here if signaled and lock wasn"t acquired
TryAgain:
...
while True do
begin
LockCount := FLockCount;
if LockCount = 0 then
goto TryAgain;
if InterlockedCompareExchange(FLockCount, LockCount + 2, LockCount) = LockCount then
Break;
end;
...
Всю функцию не привожу, ибо удалят же :)
← →
картман © (2011-02-22 16:43) [9]вот не могу понять, чем так goto запутывает код(хотя, мне любой-то код тяжело читать - кроме своего, разумеется:)): что с ним, что без него - параллельно.
← →
clickmaker © (2011-02-22 16:58) [10]> чем так goto запутывает код
ну это типа дурным тоном считается. Вроде как придти на прием к английской королеве с немытой ботвой, в косухе и в казаках
← →
Sha © (2011-02-22 17:28) [11]> картман © (22.02.11 16:43) [9]
> вот не могу понять, чем так goto запутывает код
Это когда 1-2 goto в функции, или когда их больше,
но все мспользованы единообразно,
например, для перехода на обработку ошибки.
А когда их несколько десятков и каждый использован
в своем уникальном смысле, как в фортран-программах,
то сразу все поймешь )
--
Любитель goto
← →
картман © (2011-02-22 17:29) [12]
> clickmaker © (22.02.11 16:58) [10]
это я знаю - не понимаю только, почему?
← →
картман © (2011-02-22 17:29) [13]
> А когда их несколько десятков и каждый использован
> в своем уникальном смысле, как в фортран-программах,
> то сразу все поймешь )
боже
← →
MonoLife © (2011-02-22 17:50) [14]> Давно не встречал goto
що! опять??!! (с)
← →
Игорь Шевченко © (2011-02-22 18:26) [15]Куда как более дурным тоном выглядят попытки во что бы то ни стало избавиться от goto
← →
Palladin © (2011-02-22 18:28) [16]А Дейкстра - негодяй.
← →
Сергей М. © (2011-02-22 19:21) [17]
> Empleado © (22.02.11 16:29) [8]
Тут все просто - если на границах, пересекаемых гоуту-ужимками-прыжками, окажутся границы, обозначенные try-блоками, то жди грабли большие и больно ььющие)
Это самое малое что грозит)
← →
_Юрий (2011-02-22 19:31) [18]На мой взгляд, если в высокоуровневом языке возникает необходимость в Goto, это означает, что код требует рефакторинга.
← →
boriskb © (2011-02-22 19:47) [19]
> А Дейкстра - негодяй.
А Дейкстра - умница.
← →
Игорь Шевченко © (2011-02-22 19:54) [20]
> На мой взгляд, если в высокоуровневом языке возникает необходимость
> в Goto, это означает, что код требует рефакторинга.
СлучАи, они разные бывают. Провдить рефакторинг только с целью избавиться от вполне законной конструкции языка - это не самая полезная трата времени.
← →
_Юрий (2011-02-22 20:01) [21]
> Игорь Шевченко © (22.02.11 19:54) [20]
С целью избавиться - конечно же нет.
Я вот давеча решил поиспользовать goto кое где, но потом оказалось, что код был написан неоптимально, и после рефактроринга код с goto изчез сам по себе.
Давайте так: у вас есть пример из жизни, когда goto пригодился? Можно озвучить? Именно реальный пример, а не надуманные, как тут:
http://habrahabr.ru/blogs/cpp/114211/
← →
Игорь Шевченко © (2011-02-22 20:20) [22]
> Давайте так: у вас есть пример из жизни, когда goto пригодился?
В лексических анализаторах всяческих, например, или в дизассемблерах.
код приводить не буду, потому что не вижу смысла. Дело не только в наличии/избавлении от goto, но в общей сложности кода. Любой прием, примененный для конкретно избавления от goto привнесет дополнительную сложность в код, для меня - простота кода один из важных критериев его качества.
← →
Rouse_ © (2011-02-22 20:39) [23]Как уже говорилось - приведите пример с Goto и мы докажем вам что он тут не нужен :)
ЗЫ: обычно бью код на мелкие модули и даже в дизассемблерном движке не встретил необходимости в GoTo
← →
clickmaker © (2011-02-22 20:55) [24]я тут вроде приводил этот пример уже... Но это ммм... шедевр
switch(forumAttribute)
{
case 18:
iSrc = imgSrc[0];
break;
case 530:
goto case 18;
case 10:
iSrc = imgSrc[1];
break;
case 1034:
goto case 10;
case 258:
iSrc = imgSrc[2];
break;
case 2:
goto case 258;
}
← →
Inovet © (2011-02-22 21:05) [25]> [24] clickmaker © (22.02.11 20:55)
> Но это ммм... шедевр
Автор не знал, что case можно подряд несколько записать, но при том "знал" о break.
← →
Rouse_ © (2011-02-22 21:16) [26]Ну удивительно было бы если бы он юзая С не знал о break :)
← →
Игорь Шевченко © (2011-02-22 21:56) [27]если бы элемент языка был бы настолько вреден, как его представляют местные пуристы, он был бы запрещен на уровне компилятора :)
← →
Rouse_ © (2011-02-22 22:53) [28]Как показывает практика - запретить врятли, максимум в раздел deprecated.
Проблема не в самом операторе, а в том что он несет.
На практике встречал только два образца кода где данный оператор не вносил сумятицу в структуру изложения кода. Увы...
← →
Dimka Maslov © (2011-02-23 00:34) [29]В недрах эмэсдээна можно прочесть тезис о том, что нельзя пускать исключение в ответ на действие пользователя и вообще они нужны только для избавления от гото.
← →
Германн © (2011-02-23 03:39) [30]Не упоминайте goto в форумах о дельфи и будет вам "щастье"!
Пользуйте goto в своих проектах как вам хочется.
← →
Германн © (2011-02-23 03:52) [31]
> Пользуйте goto в своих проектах как вам хочется.
>
А также пользуйте в своих проектах with как вам хочется, и иже с ним Continue и Break. Ну и добавлю Exit.
Но помните, что за последствия отвечаете вы и никто более!
← →
Дмитрий Белькевич (2011-02-23 11:40) [32]
> Но помните, что за последствия отвечаете вы и никто более!
То есть - во всех других случаях ответственность таки можно спихнуть?
← →
Alkid © (2011-02-23 12:52) [33]
> Игорь Шевченко © (22.02.11 21:56) [27]
> если бы элемент языка был бы настолько вреден, как его представляют
> местные пуристы, он был бы запрещен на уровне компилятора
> :)
Кстати, в Джаве так и сделали. Гослинг об этом так сказал: "однажды я проснулся и понял, что goto - это реально плохая вещь. Тогда я взял весь java-код в мире, и выбросил оттуда все goto. Это заняло пару часов."
С тех пор в java нет goto :)
← →
alexdn © (2011-02-23 13:03) [34]> Alkid © (23.02.11 12:52) [33]
> С тех пор в java нет goto :)
и стала java - java visual
← →
Anatoly Podgoretsky © (2011-02-23 13:03) [35]> Alkid (23.02.2011 12:52:33) [33]
А Вирт слабак
← →
palva © (2011-02-23 13:29) [36]Delphi используется для того, чтобы с его помощью обучать программированию. Если вы хотите научить программировать цикл без использования структурных операторов цикла типа for while, то вы не обойдетесь в своих примерах без goto. А уметь программировать в таком стиле должен уметь любой программист.
← →
Игорь Шевченко © (2011-02-23 13:42) [37]Alkid © (23.02.11 12:52) [33]
> С тех пор в java нет goto :)
Много где нету. И много где есть. И что с того ? :)
← →
*** (2011-02-23 13:47) [38]http://habrahabr.ru/blogs/development/114326/
← →
Mystic © (2011-02-23 13:49) [39]
> Как уже говорилось - приведите пример с Goto и мы докажем
> вам что он тут не нужен :)
Например, парсинг шахматного хода. Который имеет вид: Qa1b2, Nd4, e4, cxd4, ...
На выходе битовая маска, откуда фигура ходит, поле, куда фигура ходит, что за фигура
goto удобен тут для кодирования state-машины
← →
clickmaker © (2011-02-23 13:54) [40]> однажды я проснулся и понял, что goto - это реально плохая
> вещь. Тогда я взял весь java-код в мире, и выбросил оттуда
> все goto. Это заняло пару часов
с бодунища и не такое сделаешь
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.005 c