Goto — Ключевое слово Delphi


Содержание

delphi — Использование команды «GoTo» в delphi?

Я читал, что использование команды Goto очень плохое и может испортить ваш код. Я также прочитал, что был опрос, согласно которому 40% разработчиков Delphi будут очень крестными, если они видят команду goto и delphi вместе, а остальные 40% даже не знают о команде goto , почему?

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

Где я говорю, if iMaths = 0 просто if iMaths = 0 , есть ли значение в SpinEdit, если нет, он должен перезапустить у обработчика ButtonClick сообщение с сообщением » Please insert a proper value . Все работает отлично, но в нем все еще отображается среднее значение в метках (lblOutput и lblAvarage), которые я не хочу делать!

Если я использую команду goto , я думаю, что это должно выглядеть так:

(Кстати, я знаю, что этот код был неправильным, я пробовал!)

Я googled goto но я нахожу вещи, которые отличаются от того, что мне нужно.

Любая помощь или совет по использованию команды goto будут очень благодарны!

    2 2
  • 21 июн 2020 2020-06-21 21:50:24
  • Aidan Quinn

2 ответа

Вам не нужно использовать goto в ваших программах.

Некоторые причины не использовать его, поскольку в большинстве случаев:

  • Это сделает ваш код менее читаемым;
  • Его можно легко преобразовать в вложенные repeat.. until или в while.. Структуры, которые обычно имеют одинаковое точное время (будут скомпилированы в виде кода ассемблера jmp.. opcode.

Иногда, может быть, немного быстрее поставить условное выражение repeat.. until или в while.. структуры внутри цикла, а также использовать break и continue и repeat.. until false или while true do.. :

Что будет скомпилировано с очень оптимизированным ассемблером:

Но это, возможно, стоит только для очень низкого уровня кода и сделает его менее читаемым. Написание такого кода очень близко к написанию кода ассемблера: вы знаете, что break и continue будут преобразованы в direct jmp.. ассемблерные коды операций.

Единственный случай, когда я использую goto находится в некоторых четко определенных условиях:

  • Определенный низкоуровневый процесс данных (например, обработка текста);
  • Только по соображениям производительности;
  • При правильном модульном тестировании (поскольку код менее читабель);
  • Когда разветвление требуется между case.. of внутренних блоков или из одного цикла в другой;
  • Когда я хочу избежать вызова подпроцедуры в более старых версиях Delphi (например, Delphi 7), но в современных Delphi, goto может быть заменен inline локальной процедурой.

Как вывод, за пределами задачи FastCode в чистом паскале или в некотором низкоуровневом коде вы больше не должны видеть goto .

  • 21 июн 2020 2020-06-21 21:50:25
  • Arnaud Bouchez</