Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1300046266
Fassy
2011-03-13 22:57
2011.06.19
Уравнение 0.1+ln(1+x)-sin(1+x)


15-1299089241
Baks
2011-03-02 21:07
2011.06.19
Редактор файлов справок (hlp, chm)


15-1299145221
Неважно
2011-03-03 12:40
2011.06.19
Версия Builder a


15-1298669393
Юрий
2011-02-26 00:29
2011.06.19
С днем рождения ! 26 февраля 2011 суббота


15-1298755792
Юрий
2011-02-27 00:29
2011.06.19
С днем рождения ! 27 февраля 2011 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский