Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:
Hosting Ukraine

Руководство по стилю программирования на AutoLISP

Взято с сайта Надежды Толстобы -
http://aco.ifmo.ru/~nadinet/,
на ее сайте вы так же можете найти
лекции и задания по программированию
на AutoLisp и работе в AutoCAD
и многое другое.

Условные обозначения
- Обязательно - Допустимо
- Желательно - Нежелательно
- Заперщено

Правила компоновки

Использование глобальных данных и функций крайне нежелательно.
Файл библиотеки должен начинаться с комментированного заголовка, имеющего следующую структуру:
;; filename.lsp
;; ФИО
;;
;; Имя библиотеки
;; Краткое описание назначения библиотеки 

(prompt "/n filename.lsp /n")
Для структурирования текста программы обязательно использовать табуляцию. Величина табуляции должна составлять 4 пробела. Следить за тем чтобы в качестве табуляции использовался именно символ табуляции, а не 4 пробельных символа.

Комментарии

Комментарии должны составлять примерно 50% текста. Желательно комментировать каждый логический блок операторов (условное ветвление программ, циклические конструкции).
Обязательно комментировать объявление списков, функций и их аргументов, переменных.
Предпочтительно использование однострочного комментария со сдвигом влево на величину табуляции следующим образом:
;Обмен значениями между переменными x и y
	(setq 
		temp x
		x y
		y temp
	)
Использование однострочного комментария заканчивающего строку допускается при объявлении переменных и других подобных случаях. Например:
	(command "DIMDEC" "2"); кол-во знаков после запятой

Идентификаторы

Имена идентификаторов должны состоять из не более 6 латинских символов. Превышение этого предела требует большее количество памяти.
Для имен идентификаторов обязательно использовать символы нижнего регистра. Для имен идентификаторов желательно использовать как можно более короткие англоязычные слова, например: count, row, area, top и т.п. Для составных имен использовать символ '_'.
Неявное преобразование типов переменных недопустимо.

Выражения и операторы

Автоинкремент и автодекремент использовать в арифметических выражениях запрещается (1+ <число>).

Условные конструкции

В конструкции if желательно структурирование даже в случае однооператорного if
однооператорный if:
	(if (= a 4)
	(setq num_file "Table_1.txt")
	(setq num_file "Table_2.txt")
)








многооператорный if:
	(if (= num_file 1)
	(progn 	
		(setq f_name "Table_3.txt")
      ;создаем список
		(setq spisok (list a b c))
	)	
;иначе 		
	(progn	
		(setq f_name "Table_4.txt")
      ;создаем список
 		(setq spisok (list b c a))
	)
)

Циклические конструкции

Для организации цикла с предусловием используется следующая конструкция
	(while (<= a 10)
    (some-func a)
    (setq a (1+ a))
)
Для организации пошагового цикла с предусловием используется следующая конструкция:
	(repeat 4
    (setq a (+ a 10))
    (setq b (+ b 10))
)
Для бессмысленных переменных вложенных циклов использовать имена в следующем порядке: i,j,k,l,m,n

Селективные конструкции

Когда необходимо предусмотреть большое количество разнообразных вариантов, то можно использовать конструкцию cond строго соблюдая пунктуацию, показанную ниже:
(cond 
    ((= s "Y") 1)
    ((= s "y") 1)
    ((= s "N") 0)
    ((= s "n") 0)
    (t nil)
)

Функции

Имена функций могут состоять не менее чем из трех символов, которые должны быть латинскими буквами, и при особой необходимости арабскими цифрами.
Следует избегать превышения предела в 6 символов для имен функций. Превышение этого предела требует большее количество памяти.
Имена функций должны составляться из одного, двух или трех как можно более коротких англоязычных слов, каждое из которых записывается с большой буквы, например: GetCount, SetTop и т.п. (Для AutoLISP не имеет значения регистр, но такая запись дает возможность ориентироваться в назначении функций.)
Для реализации функции используется следующая конструкция:
;-----------------------------------------------------------(80 символов)
; назначение
;-----------------------------------------------------------(80 символов)
; входные параметры
;-----------------------------(40 символов)
; выходные параметры
;-----------------------------(40 символов)
(defun имя (параметры / локальные переменные)
    тело функции
)
(prompt "имя, ")
В списке локальных переменных должны быть перечислены все переменные, используемые в данной функции
Использовать в функциях аргументы по умолчанию нежелательно
Желательно использовать передачу данных списком.
Передача данных должна производится как результат последного действия
Когда есть выбор, то предпочтительнее использовать функций стандартной библиотеки функций AutoLISP



Copyright © Сайт поддержки пользователей САПР