ToPayment, ExtraAmount) else if WhichButton = eptAll then

Mortgage.MultipleExtraPrincipal (1, ExtraAmount);

Преимущество оператора case заключается в той информации, которую он обеспечивает. Когда вы видите первую строчку оператора case:

case SomeVariable of вы немедленно понимаете, что программа разветвляется по нескольким условиям, основываясь на значении SomeVariable. При каскадной конструкции if вы должны проверить каждый отдельный оператор if, чтобы определить, что должно проверяться. Оба метода проверки значения равносильны, но оператор case обеспечивает более наглядную информацию и его немного лете набирать с клавиатуры.

Имеет место и вопрос призводительности, заключающийся в том, что транслятор может генерировать гораздо меньший и более эффективный код для оператора case, чем для каскадного оператора if. Выигрыш в производительности не будет заметен в этом конкретном контексте, но в некоторых приложениях, где выполнение и размер кода имеют значение, замещение каскадных операторов if оператором case даст как значительное увеличение по скорости, так и уменьшение размера кода.

Оператор case может иметь (но не обязательно) условие else, которое исполняется в том случае, если никакие другие случаи не подходят. Например, вы можете написать следующий фрагмент кода:

type

PetType = (dog, cat, tiger, wolf)l; var MyPet : PetType begin MyPet := GetPetType case PetType of

dog : ShowMessage ('Хорошая собачка');

cat : ShowMessage ('Кисочка, кисочка, сюда' )

else ShowMessage ('У вас экзотическое домашнее животное!');
end;
end;

В этом коде, если переменнная MyPet - dog-(собака) или cat (кошка), отображается сообщение для этого конкретного домашнего животного. Если Mypet - что-то еще, то выполняется код в ответвлении else.

Вы можете также умножить случаи выполнения того же самого кода, подобно следу ющему:

case PetType of cat, tiger :

ShowMessage ('Ваше домашнее животное - некоторый тип кошки ) dog, wolf :

ShowMessage('Ваше домашнее животное - некоторый тип собаки');
end;

В общем, оператор case является очень полезным инструментом. Оператор if более часто используется, так как он может проверять несколько условий и условия, отличные от равенств, а оператор case является оператором, который следует выбирать, если вам приходится делать выбор среди многих различных значений конкретной переменной.

ИСКЛЮЧЕНИЕ ДУБЛИРОВАНИЯ КОДА

Когда я представлял функцию Execute окна диалога Дополнительный капитал, то упомянул, что большая часть кода, которую она содержит, дублируется обработчиками событий для переключателей окна диалога. Действительно, каждый из обработчиков событий для переключателей дублирует некоторый код в других обработчиках событий Представляется здравой мыслью - исключить дублирование кода, где только это возможно, путем инкапсуляции дублирующегося кода в одной процедуре. В этом случае, если вы изменяете работу каких-то вещей, вам необходимо менять код только в одном месте. Это также ведет к меньшей по размеру и более легко понимаемой программе. Имея это в виду, давайте посмотрим, как мы можем объединить некоторые из порций кода в окне диалога Дополнительный капитал.


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

Программирование в среде 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