Большое значение имеет и единая система именования файлов. Больше всего у нас будет файлов с исходными текстами на языке LISP. Здесь мы также будем придерживаться собственных правил.
Файлам конечных программ мы будем присваивать длинные, понятные имена с префиксом "ru_", указанием тематической группы и разделением слов символом подчеркивания, например:
- ru_block_insert_table.lsp (блок, вставка таблицы,1);
- ru_block_explode_on_layer.lsp (блок, расчленение на слой,1);
- ru_ar_face_door_residental.lsp (строительная часть, фасад, дверь жилого здания).
Исходные тексты конечных программ мы будем размещать в одном каталоге
%ruCADRootDir%SourceLisp
Откомпилированные файлы будут автоматически помещаться в каталог
%ruCADRootDir%All UsersApp
Если включен режим работы разработчика (определяемый наличием глобальной переменной *ru_developer*) и найден исходный файл, то при попытке загрузки программы будет автоматически выполняться компиляция и всегда будет загружаться последняя откомпилированная версия. Это позволит избежать вызова сотен операций компиляции вручную.
Каждую библиотечную функцию мы будем сохранять в отдельный файл , с таким же именем, как и имя функции. Файлы функций будут располагаться в каталоге %ruCADRootDir%SourceLispLib и его подкаталогах. Компиляция функций будет выполняться в одну библиотеку.
Группы функций мы будем размещать в отдельных подкаталогах каталога Lib. Например, в каталоге %ruCADRootDir%SourceLispLibGet будут размещаться файлы ru-get-*.lsp, а в каталоге %ruCADRootDir%SourceLispLibString - файлы ru-string-*.lsp.
К такой системе мы пришли в результате многолетних экспериментов. При разработке большой системы удержать в памяти имена и параметры сотен функций просто невозможно. Постоянно требуется взглянуть на исходный текст функции. Поиск исходных текстов занимал массу времени. Мы помещали группы функций в сборники, но приходилось выяснять, в каком сборнике находится функция, просматривая их. При размещении всех функций в одном большом файле приходилось заниматься поиском в этом файле. Если же размещать каждую функцию в отдельный файл в иерархии каталогов приходилось заниматься просмотром или поиском в каталогах, что немногим лучше. В результате пришлось сделать программу для просмотра дерева функций (рис. 9.2).
Рис. 9.2. Навигатор библиотеки функций
Примечание Программа ruLispExplorer, сканируя каталог библиотеки, автоматически строит дерево файлов-функций. При движении по дереву файл загружается в редактор (знающий подсветку синтаксиса LISP), в котором можно выполнить небольшую правку без загрузки в Visual LISP, скопировать имена функций и примеры использования. Для каждой функции можно отредактировать ее краткое описание, сохраняющееся в файле dirinfo.ini и "на лету" создать иллюстрацию. Кроме того, можно экспортировать текст функции в HTML-файл с сохранением подсветки синтаксиса и тут же просмотреть результат в мини-браузере. Впоследствии HTML-файлы очень облегчат нам создание сайта книги в сети Интернет. Экспортированные фрагменты будут динамически вставляться в тексты страниц сайта, не требуя ручного редактирования кода страниц.
Кроме одной главной библиотеки, мы будем создавать несколько специальных библиотек. Главная библиотека будет загружаться всегда, а специальные - при необходимости.
Файлы библиотек мы будем выделять слогом "lib", например:
- ru-lib-main.lsp (главная библиотека,1);
- ru-lib-window.lsp (библиотека функций рисования окон,1);
- ru-lib-stair.lsp (библиотека функций рисования лестниц).