Реклама:

Оператор GOTO широко применяется в подпрограммах со многими точками входа, получаемых при инвертировании программ. Это использование GOTO, безусловно, является оправданным, так как оно существенно повышает производительность группы связанных программ.

В некоторых версиях языка ПЛ/1 организация структуры индексированного повторения оказывается затруднительной, если повторение входит как часть в подпрограмму и работа этой подпрограммы прекращается на время между обращениями к ней. В таком случае нельзя полагаться на сохранность значения индекса, управляющего повторением в промежутках времени между очередными обращениями. Поэтому в подобных ситуациях повторение нужно кодировать «от руки», а значение индекса следует сохранять в «безопасном» месте, например, в статической памяти. Но кодирование повторения без конструкций вида DO WHILE или DO UNTIL потребует использования операторов GOTO для обеспечения возврата в начало повторения, когда оно выполнилось. Сходные проблемы возникают в Коболе в связи с операторами ВЫПОЛНИТЬ и ЕСЛИ-ТО в подпрограммах и тоже требуют применения операторов перехода.

Приведенные примеры демонстрируют некоторые из обоснованных использований GOTO. Всякая организация должна установить для себя собственные правила употребления ветвлений в программах. Принцип «без GOTO» невозможно осуществить во всех программах, кроме самых тривиальных. Поэтому операторы GOTO нужно разрешить, но во избежание появления особо запутанной кодировки их применение необходимо строго контролировать, причем контроль должен воздействовать на практику программирования. Стандарты использования GOTO можно внедрить ненавязчивым способом с помощью механизма прослеживания проектов и предлагаемых кодировок программ до запуска их в эксплуатацию. См. гл. 14 в книге автора [4], где подробно описан прием прослеживания для проведения систематических обзоров программ.

12.5. Заключение

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

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

Операторы GOTO отнюдь не предаются анафеме, их следует рассматривать как одну из полезных конструкций, для которой, как и для всех остальных, будут предусмотрены строгие правила применения.

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


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