|
Программирование >> Проектирование интерфейса пользователя
6: Function ts (ByVal FileName As String ) As Boolean 7: FileExists If (Len( Dir( FileName ) ) > 0) 8 : End Function 9: 10:Function OpenFile( ByVal FileName As String ) As Double ii: If (FileExists(FileName)) Then 12: OpenFiie = DoOpenFile(FileName) 13: Else 14: процедура обработки ошибок 15: End If 16:End Eunotion I Первая из функций, DoOpenFile, текст которой расположен в строках 1-4, непосредственно решает задачу, открывая файл и возвращая его номер в виде числа двойной точности. Вторая функция, FileExists, находящаяся в строках выполняет проверку существования файла с заданным име- нем. Внешняя функция, OpenFile, выполняет операции по проверке существования файла и в случае успеха вызывает функцию DoOpenFile. Обращаться следует, разумеется, к функции OpenFile. Результат получается простым и удобным. Таким образом, создаются внутренние и внешние функции. Вызываемая функция обеспечивает обработку ошибок, а внутренняя функция, с префиксом Do, непосредственно выполняет операцию. Как комментировать код Работая над черновиком программы, вы наверняка выдвигаете определенные предположения о ее назначении. Уделите пару минут, чтобы зафиксировать их в виде примечаний к коду. Гораздо проще комментировать текст профаммы во время ее написания, нежели позже, когда придется восстанавливать в памяти ход своих рассуждений. Вот несколько простых советов по поводу написания комментариев. Используйте полноценные предложения. Комментируйте длинные фрагменты кода. Сопровождайте примечаниями неоднозначные участки кода и фрагменты, заимствованные из других источников. Используйте полноценные предложения Этот совет, считаем, вполне понятен. Не ленитесь выражать свою мысль в виде законченных предложений на родном языке. Они помогут в ходе дальнейшей работы над профаммой и пригодятся при написании руководств. Хорошо известна профамма JavaDoc.exe, которая автоматически генерирует документацию к профамме, читая ее исходный текст на языке Java. Вполне возможно, вам удастся найти подобное средство, ориентированное на применение в среде VBA. Комментируйте длинные фрагменты кода ЕСЛИ процедура или функция содержит более трех-пяти строк, подумайте о написании нескольких предложений, которые поясняют ваш замысел, раскрывают назначение кода и оговаривают особые условия его использования. Сопровождайте примечаниями неоднозначные участки кода Если код предусматривает выполнение особо точных операций либо заимствован из внешнего источника, не лишайте себя возможности ввести пару-тройку примечаний. При комментировании чужого кода обязательно укажите полное наименование источника, из которого он получен, наименование файла или документа, номер версии, фамилию автора, дату опубликования, номера страниц и т.п. Вполне вероятно, что со временем вам потребуется вновь обратиться к тому же источнику за очередной редакцией кода, разъяснениями или помощью в преодолении нештатных ситуаций. О возможностях повторного использования кода Индустрия, основанная на принципах повторного применения программного кода, располагает миллиардами долларов. Имя ей - объектно-ориентированное программирование. Собственно говоря, одна из предпосылок появления этой отрасли была связана с поисками ответа на вопрос, как добиться возможностей многократного использования ранее созданного программного кода. (Подробнее вопросы объектно-ориентированного программирования освещены в главе 21-й час. Основы программирования классов .) Впрочем, решить подобную задачу можно не только в рамках объектной парадигмы. И ниже рассказано, как этого достичь. Код, который следует применить, написан - т.е. вам уже не нужно этим заниматься. Он наверняка прошел стадию отладки и тестирования - стало быть, если вы не собираетесь его исправлять, повторная отладка не потребуется. Поскольку код ранее уже кем-то использовался (может быть, даже вами), не исключено, что он способен полностью решить вашу конкретную проблему. Наконец, если вставить подобный код в некую обрамляющую его процедуру, вам потребуется протестировать только эту процедуру. Листинг 14.5 иллюстрирует сказанное. Если вы позаимствовали готовую функцию, подобную DoOpenFile, а затем облекли ее в оболочку , схожую с OpenFile, достаточно будет проверить, насколько правильно работает новая, внешняя, функция. Важно как можно раньше утвердить систему именования процедур и функций и последовательно ее придерживаться. Объяснения просты: если вы решили изменить название функции, придется пролистать текст программы и отредактировать все ссылки на эту функцию. Исправленный код, разумеется, нуждается в тестировании. Впрочем, существует иной способ достижения цели. Представьте, у вас есть процедура. Если перед ее именем ввести префикс (скажем, Do), а затем создать новую, обрамляющую , процедуру, дав ей имя прежней, весь код останется в неприкосновенности, и тестировать доведется только вновь созданную процедуру. Чем более лаконична процедура или функция, чем более четкими и понятными именами и комментариями она снабжена, тем выше вероятность ее повторного использования. Словом, если вы прислушаетесь к советам, которые прозвучали в ходе этого занятия, вам удастся дать многим программным творениям - своим и чужим - вторую жизнь, тем самым облегчив собственную. Советы по тестированию и отладке кода В главах 17-й час. Отладка кода и 18-й час. Обработка ошибок во время выполнения программы содержатся подробные сведения по вопросам тестирования и отладки программного кода, поэтому рассматривать в данный момент нецелесообразно. Дадим лишь некоторые советы-предостережения. Исправляя код, обязательно подвергайте его повторному тестированию даже в том случае, если изменения кажутся незначительными; в противном случае вы рискуете собственной профессиональной репутацией. При отсутствии специальных средств контроля версий программного продукта ведите журнал, в котором в хронологическом порядке перечисляются выявленные ошибки и внесенные исправления. Минуты, потраченные сейчас, впоследствии обернутся часами сэкономленного времени и массой сохраненных нервных клеток. Еще раз о работе с данными Решить проблему удобочитаемости программного кода могут также применяемые вами способы работы с данными. Вот несколько кратких советов по этому поводу. Используйте именованные константы вместо литеральных значений. Проясняйте назначение и смысл параметров процедур и функций с помощью служебных слов ByVal, ByRef и Optional. Ограничьте применение глобальных переменных. Если вам приходится использовать литеральные символьные или числовые константы, определите их явно с помощью служебного слова Const и четких, понятных наименований. Характерный пример приведен в тексте листинга 14.4. Чтобы гарантировать неизменность значения параметра, переданного функции, используйте служебное слово ByVal. Если, в соответствии с вашим замыслом, значение аргумента может изменяться внутри функции, назначьте переменной квалификатор ByRef. Наконец, если аргумент в большинстве случаев принимает некоторое заранее известное значение, обозначьте его как Optional. Пример использования служебного слова Optional приведем в листинге 14.1, Резюме Как вы пишете собственные программы - дело личное. Единого универсального способа оформления программного кода, увы, не существует, но какой-то вам все равно придется избрать и последовательно использовать. Приняв определенную стратегию действий, вы сможете освободить время, направив свои знания и энергию на достижение более высоких целей. На этом занятии вы узнали о том, как с помощью упрощения и уменьшения размера процедур и функций добиться возможности повторного использования собственного и заимствованного кода. Мы обсудили схемы именования программных объектов: процедуры и функции, например, удобно называть словосочетаниями, состоящими из глагола и существительного. Расчленение многоуровневых управляющих структур на составные части - еще один способ обеспечения удобочитаемости и управляемости кода. Столкнувшись с задачей изменения имени существующей функции, вы можете облечь ее рамками новой, избежав при этом необходимости внесения многочисленных исправлений и проведения исчерпывающего повторного тестирования.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |