Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.19;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.014 c
15-1298655944
Fergo
2011-02-25 20:45
2011.06.19
Интересный алгоритм в обычном калькуляторе.


15-1298842202
Юрий
2011-02-28 00:30
2011.06.19
С днем рождения ! 28 февраля 2011 понедельник


8-1212651799
Феликс
2008-06-05 11:43
2011.06.19
WMF. Переформулирую вопрос


15-1299164683
bad man
2011-03-03 18:04
2011.06.19
бинарные операции


2-1299849594
ANNWYN
2011-03-11 16:19
2011.06.19
проблема со шрифтом на Delphi