1 (изменено: ypppu, 2021-07-05 20:37:08)

Тема: OFF: AutoHotkey для чайников от ypppu

Чайники иногда норовят использовать GOTO. Мне в Википедии попалось хорошее, внятное объяснение, почему эту команду использовать нежелательно. Я решил процитировать здесь; считаю что для новичков будет полезно.

ru.wikipedia.org/wiki/Бейсик пишет:

Числовые метки и активное использование GOTO было неизбежным при программировании на Бейсике, что способствовало плохой структуре кода и в больших проектах приводило к запутыванию самих авторов. Был даже придуман шуточный термин «макаронное программирование» (spaghetti code), потому что логика программы с частыми переходами GOTO напоминает тарелку со спагетти.

Я когда-то был новичком. Знал, что такое GOTO, и не знал, что такое GOSUB. А когда узнал - понял преимущество GOSUB.

Malcev пишет:

Не вижу ничего плохого в GoTo.
Даже специально взял свой старый код 5-летней+- давности на несколько тысяч строк с кучей GoTo - мне все понятно.
Ноя не проф. программер.
А на нашем форуме GoTo использовали и профессиональные прграммисты.

2

Re: OFF: AutoHotkey для чайников от ypppu

GOTO неплох, если не злоупотреблять.

3

Re: OFF: AutoHotkey для чайников от ypppu

Преимущество GOSUB - эта команда автоматически возвращает нас из подпрограммы к отправной точке. Нет нужды запоминать, откуда шла логическая цепочка. В любом случае поток вернётся в исходную точку. Не нужно держать в голове сложную схему.
А, значит, меньше вероятность ошибиться или запутаться. И, даже если автору кода не составит труда помнить все эти переходы, другому разработчику придётся долго и уныло вникать в его код.

4

Re: OFF: AutoHotkey для чайников от ypppu

Попался на форуме пример странного использования GOTO:

 CoordMode, Pixel , Screen
kok:
E::
while GetKeyState ("E")
{
PixelSearch, Px, Py, 960, 537, 964, 543, 0x4E4EBF, 3, Fast
if ErrorLevel 
{
Goto, kok
}
else
Send, {LButton}
Sleep, 100
Exit
}
return 

Нашёл похожую тему  AHK: В чем "злость" Goto?

5

Re: OFF: AutoHotkey для чайников от ypppu

ypppu пишет:

Я когда-то был новичком. Знал, что такое GOTO, и не знал, что такое GOSUB. А когда узнал - понял преимущество GOSUB.

Кстати, из ahk v2 GoSub выпилили, а GoTo оставили.

6

Re: OFF: AutoHotkey для чайников от ypppu

из ahk v2 GoSub выпилили, а GoTo оставили

Предположим, я из разных точек скрипта хочу обращаться к какой-то подпрограмме. Так, чтобы подпрограмма меня потом возвращала к отправной точке. Как подпрограмма узнает, куда нужно вернуться? А с GoSub это работает элементарно.

7

Re: OFF: AutoHotkey для чайников от ypppu

Заменили на вызов функций.

8

Re: OFF: AutoHotkey для чайников от ypppu

Логично, GoSub и функции, можно сказать, друг друга дублируют. Но чайникам проще начинать с GoSub.