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




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


Очевидно, что нет смысла предпринимать поиск, если у нас бобов в запасе нет. Было бы более эффективно написать

: ?ПОХЛЕБКА СТРУЧКИ-БОБОВ? IF ПОХЛЕБКА РЕЦЕПТ? IF ПОХЛЕБКА ПРИГОТОВИТЬ THEN THEN ;

Мы не обеспокоены поисками рецептов при отсутствии бобов. Другое исключение возникает, когда какое-нибудь условие не выпоняется скорее всего. Устраняя его в первую очередь, Вы избегаете необходимости проверять остальные.

------------------------------------------------------------ СОВЕТ Когда многочисленные условия имеют различный вес (в смысле предпочтительности или времени на вычисление), вкладывайте условные операторы так, чтобы на первом уровне был тот, который выполняется наименее вероятно или является самым легким в вычислении. ------------------------------------------------------------

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

: ?ВСТАВАТЬ ТЕЛЕФОН ЗВОНИТ? БУДИЛЬНИК ЗВОНИТ? OR IF ВСТАТЬ THEN ;

мы проверяем и телефон, и будильник, хотя лишь одного из них достаточно, чтобы нас поднять. Теперь предположим, что определять, что звонит будильник, очень трудоемко. Мы могли бы написать

: ?ВСТАВАТЬ ТЕЛЕФОН ЗВОНИТ? IF ВСТАТЬ ELSE БУДИЛЬНИК ЗВОНИТ? IF ВСТАТЬ THEN THEN ;

Если верно первое условие, нам больше не нужно проверять второе. Мы в любом случае вынуждены вставать, чтобы взять трубку. Повторение ВСТАТЬ выглядит уродливо и даже близко не подходит по читабельности решению через OR - однако в некоторых случаях оно предпочтительно. - 248 -

ВЫБОР СТРУКТУР УПРАВЛЕНИЯ ~~~~~~~~~~~~~~~~~~~~~~~~~ ------------------------------------------------------------ СОВЕТ Самый элегантный код - тот, который наиболее точно отражает проблему. Выбирайте структуру управления так, чтобы она наилучшим образом подходила к проблеме передачи управления. ------------------------------------------------------------

ОПЕРАТОРЫ CASE.

Определенный класс задач требует выбора нескольких возможных путей исполнения в соответстсвии с числовым аргументом. К примеру, мы желаем написать слово .МАСТЬ для приема числа, представляющего масть игральной карты, от 0 до 3, и печати имени этой масти.


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