Понять Exit несложно. Первая исполняемая строка кода в этой процедуре события:

if (not МогtgageGrid.Visible) then Exit;

осуществляет проверку на предмет отображения закладной в данный момент. Если ни одна закладная не отображается, то вызывается стандартная процедура Exit. Exit осуществляет немедленный выход из процедуры, содержащей его, не выполняя больше никакого кода в этой процедуре. Программа продолжает выполняться с оператора, следующего после того, который вызвал процедуру (так же, как если бы процедура завершилась обычным образом). Exit является хорошим способом обойти излишнюю вложенность внутри процедуры. Например, раньше или позже вы закончите писать процедуру, сходную со следующим псевдокодом:

if (некоторое условие истинно) then begin { делать что-нибудь }

if (какое-нибудь другое условие истинно) then begin { делать что-то еще )

if (еще одно условие истинно) then begin ( делать еще что-то } - { если ... до бесконечности } end end end

Написание подобного рода кода весьма утомительно, и многочисленные вложения такого рода трудно держать в порядке, особенно через шесть месяцев после того, как вы написали их. Процедура Exit позволяет нам изменить смысл наших проверок и избежать все эти вложения, подобно следующему:

if (некоторое условие ложно) then Exit ( делать что-то )

if (если какое-то другое условие ложное) then Exit { делать что-то еще }

if (еще какое-то условие ложное) then Exit { делать еще что-то } { до бесконечности }

Код, использующий Exit таким образом, по-моему, гораздо легче прочесть и понять, чем вложенную конструкцию if в предыдущем примере. Пуритане от структурного программирования не любят процедуры Exit, поскольку она нарушает радикальное правило: каждая процедура должна иметь только одну точку выхода. Но я не пуританин, меня больше интересует написать код, который легче прочесть, понять и модифицировать через шесть (или более!) месяцев. Если мне, время от времени, приходится нарушать несколько глупых правил, чтобы сделать процедуру более простой, значит так тому и быть. К счастью, Полиция Структурного Программирования не конфисковала мой компьютер, пока...

Оператор case

Оператор case является еще одним - более общим путем исключения излишнего каскадирования операторов if. В TMortgageForm.btnExtraClick у нас имеется следующий код, который исполняется в функции Execute окна диалога Дополнительный капитал, возвращающей True:

case WhichButton of eptOne :

Mortgage.ApplyExtraPrincipal (FromPayment, ExtraAmount) eptRange

Mortgage.RangeExtraPrincipal (FromPayment,

ToPayment, ExtraAmount);

eptAll :

Mortgage.MultipleExtraPrincipal (1, ExtraAmount);
end;

Этот код просто проверяет значение ExtraPrinDlg.WhichButton и выполняет различные функции, основываясь на этом значении. Написанный с использованием стандартного каскадирования конструкции if, этот код был бы следующим:

if WhichButton = eptOne then

Mortgage.ApplyExtraPrincipal (FromPayment, ExtraAmount) else if WhichButton = eptRange then

Mortgage.RangeExtraPrincipal (FromPayment,


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31