Главная страница Visual 2000 · Общий список статей

Систематическое описание выявляет проблемы языка VBA
Андрей Колесов

Рецензия на книгу:
Король В.Н. Visual Basic 6.0, Visual Basic for Applications 6.0. Язык программирования. Справочник с примерами. Издание второе, исправленное. — М.: КУДИЦ-ОБРАЗ, 2000. — 448 с.

© Андрей Колесов, 2001
Авторский вариант. Статья была опубликована c незначительной литературной правкой в еженедельнике PC Week/RE (№ 10/2001, с. 42) PC Week/RE Online


Эта книга — действительно очень полезное пособие для тех, кто занимается разработкой в среде как автономного Visual Basic, так и Visual Basic for Applications, входящего, в частности, в состав офисных приложений Microsoft. Автор сознательно ограничил свою задачу созданием систематизированного справочника по самому языку программирования, выведя за рамки обсуждения многочисленные вопросы работы в среде VB, создания визуального интерфейса и пр.

Основной объем книги занимает последовательное (в алфавитном порядке) описание всех элементов языка, а также довольно подробный рассказ об объектной модели FileSystemObject. Конечно, эту информацию можно найти в электронной справке, но кроме сугубо официальных сведений, имеющихся в документации, автор приводит свои собственные конкретные примеры, рекомендации и маленькие хитрости программиста, а также поправки к справочной системе, которая не без ошибок.

Изучение книги будет полезным и для опытных VB/VBA- программистов, которые наверняка найдут в ней функции, о существовании которых они не подозревали. Безусловный интерес представляют также разделы, посвященные группированию элементов языка по функциональному назначению, общим принципам написания VBA-приложений, а также примеры полезных программ.

Однако, рекомендуя книгу VB/VBA-разработчикам, следует сделать несколько важных замечаний.

  1. Автор, безусловно, прав, говоря о том, что приведенные в книге сведения годятся, как для VBA, так и VB-программистов. Однако, сказав это, было крайне полезно более четко рассмотреть структуру инструмента, чтобы читатели лучше поняли о какой его части ведется рассказ. К сожалению, введение под названием "Что такое Visual Basic" не столько кратко, сколько весьма запутанно, объясняет данный вопрос.

  2. А на самом деле, это можно сделать довольно просто, внимательно посмотрев на содержимое используемых компонентов в окнах Object Browser и References. Так в среде автономного Visual Basic видно, что эта среда использует три обязательных библиотеки — VBA, VB (встроенные объекты и процедуры) и VBRUN (пополнение к VB). А среда программирования в офисном приложении включает только библиотеку VBA плюс библиотеки объектов данного приложения. Соответственно, в книге речь идет только об элементах, включенных в общую библиотеку VBA.

    Тут было бы также полезно немного сказать о принципах расширения функций среды программирования за счет подключения дополнительных библиотек объектов. Это важно, хотя бы для того, чтобы читатели поняли, например, что объект Printer является встроенным в VB и не может быть подключен к VBA, а объект ADO доступен для обеих систем.

  3. Систематическое изложение языка наглядно демонстрирует явную функциональную перегруженность VB/VBA, наличие большого числа дублирующих функций и конструкций, а также путаницу, создаваемую легкомысленной идей о допущении неявного преобразования данных. Помимо того, что это усложняет описание и изучение языка, результатом данной ситуации является снижением надежности создаваемых программ (например, два альтернативных варианта реализации одного алгоритма могут приводить к разным результатам).

  4. Понимание многих функций языка VB требует более детального изучения некоторых основ реализации данной системы. Иначе описание, выхваченное из контекста общей проблемы, может просто ввести в заблуждение пользователя. В качестве такого примера можно привести большую группу функций обработки строковых переменных, применение которых требует хорошего понимания принципов кодировки ANSI и Unicode. В книге по этому вопросу дается, фактически, перевод весьма двусмысленных фрагментов оригинальной документации. (Поэтому вопросу рекомендую посмотреть статью "Особенности работы со строковыми переменными на VB".)

  5. К сожалению, исправляя погрешности исходной документации, в ряде случае автор в своих комментариях дает довольно сомнительные рекомендации и просто ошибки. Например, его утверждение о том, что VB/VBA не использует опцию "При вводе двух цифр года использовать интервал столетия", являет неверным. (Обработка дат в VB имеет довольно много подводных камней. Подробнее об этом говорится в статье "Особенности обработки дат в VB" на том же Web-сервере.) Трудно также согласиться с автором в том, что скорость обработки многомерного массива зависит от порядка использования его индексов.

  6. В целом книга использует очень удачный макет верстки. Однако, в ней имеются некоторые ошибки корректуры и печати. Например, содержание страницы 26 продублировано на странице 24.

    И все же, несмотря на отмеченные недостатки, еще раз рекомендую VB/VBA-разработчикам внимательно изучить книгу, а автору желаю поскорее готовить ее следующее издание.

    В начало статьи