Способ мышления-Форт



             

Глава 8. Минимизация структур управления - часть 4


Процедура предположительно "высшего" уровня обременена проверкой на наихудший, самый тривиальный тип события. И каждая из проверок становится ответственной за вызов следующей. Третья версия ближе всего подходит к тому, что может дать Форт. Слово самого высокого уровня точно выражает, что происходит на уровне концептуальном, показывая лишь главный путь. Каждое их подчиненных слов имеет свой собственный выход по ошибке, не засоряющий читабельность главного слова. Одна проверка не обязана вызывать следующую проверку.

Рис.8-3. Перефакторизация и/или устранение условных операторов.

БАНКОМАТ --------

: ПУСК ЧИТАТЬ-КАРТУ ТЕСТ-ВЛАДЕЛЬЦА ТЕСТ-КОДА ТРАНЗАКТ ;

: ЧИТАТЬ-КАРТУ правильная послед-ть кодов НЕ читается IF выбросить карточку QUIT THEN ;

: ТЕСТ-ВЛАДЕЛЬЦА владелец НЕ правильный IF съесть карточку QUIT THEN ;

: ТЕСТ-КОДА введенный код НЕ соответствует коду владельца IF предупреждение QUIT THEN ;

: ЧИТАТЬ-КНОПКУ ( -- адрес-функции-кнопки ) ( аппаратно-зависимый примитив ) ;

: ТРАНЗАКТ ЧИТАТЬ-КНОПКУ EXECUTE ;

1 КНОПКА РАСХОД

2 КНОПКА ПРИХОД

: РАСХОД запрос запрос =< текущего баланса IF ОПЛАТА THEN ; - 242 -

: ОПЛАТА оплата =< допустимого расхода IF оплатить подсчитать дебет ELSE предупреждение THEN ;

: ПРИХОД принять конверт подсчитать кредит ;

Слово ТРАНЗАКТ, кроме того, спроектировано вокруг того факта, что пользователь делает запросы, нажимая кнопки на клавиатуре. Нет необходимости ни в каких условных переходах. Одна кнопка начинает запрос на оплату, а другая - на размещение. Этот подход готов к восприятию позднейших изменений, таких, как добавление возможности делать переводы средств. (И этот подход поэтому становится `не` зависимым от аппаратуры. Детали интерфейса с клавиатурой могут быть сокрыты в лексиконе клавиатуры ЧИТАТЬ-КНОПКУ и КНОПКА.) Разумеется, Форт позволит Вам выбрать любой из трех методов. Который из них Вы предпочитаете?

КАК УСТРАНЯТЬ СТРУКТУРЫ УПРАВЛЕНИЯ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В этом разделе мы изучим различные способы упрощения или избегания условных операторов.


Содержание  Назад  Вперед