Назад Оглавление Вперед
На головную страницу М.М.Горбунов-Посадов
 
РАСШИРЯЕМЫЕ ПРОГРАММЫ
 

 Г л а в а  1
ОФОРМЛЕНИЕ ВАРИАНТА
 
1.5. Оператор выбора
 

 

1.5. Оператор выбора

      Еще один возможный способ решения проблемы варианта — оформление вариантных фрагментов в виде отдельных ветвей оператора выбора. Точнее говоря, исходная программа трансформируется следующим образом.
      Вводится специальная переменная, которая инициализируется значением, управляющим включением той или иной ветви оператора выбора. На месте вариантного фрагмента записывается оператор выбора, управляемый введенной переменной. Ветви оператора выбора представляют собой старый и новый вариантные фрагменты (рис. 1.3).

Рис. 1.3.  Оформление варианта посредством оператора выбора
(на языке программирования Ада [Джехани, 1988]).
а — исходный текст,  б — текст с оператором выбора;
 
, — вариантные части

(Использование здесь термина «оператор выбора», а не термина «условный оператор» вызвано тем, что условный оператор обычно ассоциируется с развилкой на одну-две ветви, а оператор выбора — на две-три и более ветвей, т. е. «оператор выбора» точнее отражает ситуацию с вариантными фрагментами.)
      Сначала оценим данный метод с точки зрения двух критериев, применявшихся в предшествующих разделах: предотвращения дублирования текста и безболезненности изменений. Дублирования текста здесь не происходит, и в этом плане оператор выбора превосходит рассмотренные в предыдущих разделах методы размножения окрестности и применения подпрограмм.
      Однако с точки зрения безболезненности внесения изменений соотношение обратное — у обоих рассмотренных выше методов результаты лучше, чем у оператора выбора. Дело в том, что включение и исключение ветвей выбора всегда сопряжено с редактированием текста существующей программы, а это угрожает потерей работоспособности отлаженной ранее версии. Напомним, что при размножении окрестности оформление нового вариантного фрагмента всегда происходит безболезненно, а при применении подпрограмм безболезненно выполняются подключение и отключение третьего и последующих вариантов для уже оформленных ранее вариантных подпрограмм.
      К недостаткам применения оператора выбора следует отнести и загромождение исходного текста программы вариантными ветвями. Если текст просматривается с целью изучения возможностей вариантных фрагментов, то их последовательное размещение в операторе выбора можно счесть довольно удобным. Но существенно чаще текст просматривается сквозь призму выполняемой программы, и в этом случае включенные в текст вариантные фрагменты, не участвующие в выполнении, только отвлекают внимание.
      Для целей оформления варианта можно, вообще говоря, использовать как выполняемый оператор выбора, так и оператор выбора периода компиляции. Однако эти способы далеко не равноценны. Оператор периода компиляции обычно достаточно рельефно выделяется из текста программы, в то время как выполняемый оператор выбора сливается с окружающим его текстом, затрудняя тем самым узнавание вариантных ветвей при последующем просмотре. Кроме того, если используемый компилятор не способен обеспечить выбрасывание из компилируемой программы оформленных как выполняемые, но не работающих вариантных фрагментов, то объектный код окажется загроможденным конструкциями, не участвующими в выполнении.
      К сожалению, операционная среда не всегда предоставляет в распоряжение программиста необходимые средства периода компиляции. Но если такая возможность есть, то предпочтение в данном случае должно быть отдано этим средствам. В то же время не следует забывать, что с точки зрения безболезненности оператор выбора периода компиляции ничуть не лучше оператора периода выполнения.

Далее

Рейтинг@Mail.ru