Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 154

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 148 149 150 151 152 153 < 154 > 155 156 157 158 159 160 .. 316 >> Следующая

8.5. ПАРАМЕТРИЗАЦИЯ
435
• использование специального out-параметра для передачи кода ответа (наиболее гибкий вариант, но требующий дополнительных описаний даже тогда, когда проверка кода ответа не требуется).
Все эти варианта дают одно и то же, а какой из них выбрать, диктуется условиями использования процедуры ввода матриц (в сочетании с другими средствами из соответствуей библиотеки).
В простых случаях тип кода ответа — логический: истинное значение — все нормально, ло ное — оибка. огда требуется диагностика оибок, целесообразно в качестве типа кода ответа использовать перечисление:
type TansCode = (ok, erl, er2, unknown_er);
Это описание требуемого типа на языке Pascal .Для С/С++ оно выглядит сле-дуим образом:
enum TansCode = {ok, erl, er2, unknown_er};
спользование кодов ответов — это ее один из рекомендуемых приемов работы с процедурами с регламентацией зависимости их от контекста погру-ения. ри его применении вано четко придериваться единообразия оперирования с кодами ответов не только при его формировании, но и при последующем распознавании результатов. Только тогда можно будет утверждать, что этот прием приведет к сокраени мсленных усилий программистов.
ель проведенного обсу дения вариантов реализации ввода матриц — дать представление о том, о чем ну но заботиться при разработке своих процедур и функций. Благодаря этому следующие методические рекомендации приобретают некоторую мотивированность:
• Погружение процедуры в глобальный контекст и переработка данных этого контекста, вообще говоря, более эффективны по сравнению с параметризацией. то е время оно делает почти невозмо нм использование процедур вне контекста погру ения.
• потребление переменной из глобального контекста не оправдано, когда в процедуре вместо нее может быть использована локальная переменная. За счет этого не только снижается зависимость процедуры от контекста погру ения, но и пова тся ее наденость и понятность: изменения локальнх переменнх не изменя т данне, остаиеся после отработки процедуры, точно известно, что локальный объект не имеет смысла вне подпрограммы.
436
ГЛАВА 8. ПОДПРОГРАММЫ
• То же относится и к другим программным объектам: типам, константам и т. д. Они должны быть локализованы в контексте, в котором используются, а не в охватывающем контексте.
• Если элемент данных предназначен для совместного оперирования нескольких подпрограмм, то его можно рассматривать как часть общей памяти этих подпрограмм, т. е. часть их общего контекста. Скорее всего, такой объект не дол ен передаваться как параметр. скл чение со-ставля т случаи раздельной обработки нескольких таких объектов, и тогда их следует передавать подпрограмме в качестве параметров.
• спользование значения, которое задает тот или иной путь вычислений процедуры, целесообразно оформлять как in-параметр. В большинстве языков это означает необходимость передавать его как параметр-значение. Но не следует забывать и о механизмах передачи параметра по сслке или как переменной, которе позволя т избеать дублирования значения фактического параметра в локальном контексте. В частности, в С/С++ вненяя похо есть передачи массива на механизм параметров-значений не должна вводить в заблуждение на этот счет.
• ри необходимости получить результат какого-либо вычисления с по-моь процедур для использования этого результата в качестве операнда выражения целесообразно оформлять функцию, результат которой специфицирован типом требуемого результата (или совместимм с ним типом).
• То же относится и к ситуации, когда результат используется в качестве фактического параметра другой процедуры. днако при ориентации на Pascal следует помнить, что язк допускает лиь скалярные результат функций, а потому ограничивает возмо ности применения данного средства.18
• ри необходимости получения нескольких результатов процедуры воз-мо но, что логически вделяется один из них и этот результат требуется использовать в качестве операнда выражения. В таком случае удобно оформлять процедуру как функци , специфицированну типом этого
В Object Pascal это ограничение снято.
8.5.
437
операнда (или совместимым с ним типом). стальне результаты являются логическими out- или inout-параметрами, которые моделируются механизмом передачи параметров-переменных или ссылок.
• ообе говоря, использование функций с несколькими результатами вычислений представляется ненадежным средством программирования, т. к. оно мо ет приводить к не елательнм побочным эффектам. а-денее использовать для этих целей процедур с выходными параметрами. формлять результаты процедуры как влияние ее на глобаль-нй контекст ее более ненаденое средство за искл чением тех случаев, когда в глобальном контексте определяется система понятий как объект обей обработки нескольких подпрограмм.
• Общая рекомендация по использованию подпрограмм в том, что использование той или иной возможности языка всегда должно быть мотивировано. Впрочем, то е мо но сказать по отноени лбых средств программирования: принимая какое-либо решение, разработчик программы дол ен четко осознавать не только то, что с его помоь достигается требуемое, но и все последствия, к которым приводит и/или может привести это решение.
Предыдущая << 1 .. 148 149 150 151 152 153 < 154 > 155 156 157 158 159 160 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100