МОИ ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ
Цели, к которым я стремлюсь (но не всегда достигаю, в основном
из-за нехватки времени, знаний и лени).
ПОЛЕЗНОСТЬ
Программа должна приносить конкретную пользу (в идеале не только разработчику),
не дублировать команды AutoCAD и Express и окна свойств AutoCAD, и повышать
производительность в разы.
РАБОТОСПОСОБНОСТЬ
Программа должна работать при любых значениях системных переменных AutoCAD,
в любых системах координат, и в идеале, в любых пространствах (модели-листа) и версии AutoCAD.
ТЩАТЕЛЬНАЯ ОТЛАДКА КОДА
Проверять все ветви кода (в том числе на возврат функциями возможного nil),
обязательно тестировать программу в разных системах координат, в пустом
чертеже, в разных версиях AutoCAD.
УБОРКА МУСОРА
После окончания работы программы (функции) в памяти должны оставаться только самые необходимые переменные и функции, все остальные безжалостно удалять из памяти.
КОММУНАЛЬНАЯ КВАРТИРА
Не забывать о том, что ты не единственный программист для AutoCAD. Применять для имен программ, функций и глобальных переменных свои префиксы, чтобы свести к минимуму риск переопределения их программами других разработчиков. Полная надежность обеспечивается загрузкой программы перед исполнением.
УНИВЕРСАЛЬНОСТЬ
Программа должна обрабатывать все однотипные объекты.
ФУНКЦИОНАЛЬНОСТЬ
Лучше сделать одну программу с 5 опциями для различных режимов, чем 5
отдельных программ. И тебе и пользователю легче запомнить одно имя.
НЕ НАВРЕДИ ПОЛЬЗОВАТЕЛЮ
Все, что делается внутри программы, должно быть прозрачным для пользователя.
Обязательно возвращать значения системных переменных, которые были до
запуска программы. Исключение - объектная привязка (OSNAP), ее желательно оставлять такой, какой возможно задал пользователь во время работы программы.
ОБРАБОТКА ОШИБОК
Ошибки и прерывания, возникающие в процессе работы программы, следует
обязательно обрабатывать, информировать о них пользователя и возвращать
окружение в прежнее состояние, сбрасывать подсвеченные объекты, удалять временно созданные объекты и т.п..
ПОМОЧЬ «ЧАЙНИКУ» или «ЗАЩИТА ОТ ДУРАКА»
Следует отлавливать ошибки пользователя при вводе данных (незнание, невнимательность,
вредность …) исправлять и/или сообщать о них.
ИНФОРМАТИВНОСТЬ
Работа программы должна сопровождаться соответствующими подсказками, сообщениями
и предупреждениями, которые должны быть лаконичны и понятны даже для неподготовленного
пользователя, и построены по стандарту AutoCAD.
ПОМОЧЬ «ЛЕНИВОМУ»
Интерфейс программы следует продумывать таким образом, чтобы свести количество
нажатий клавиш клавиатуры и/или мыши к достаточному минимуму. Параметры
программы по умолчанию следует назначать такими, чтобы они устраивали
большинство будущих пользователей. Организуй запуск программы через меню
(желательно и иконку).
НАСТРАИВАЕМОСТЬ
Наиболее важные параметры программы должны быть доступны для настройки
пользователем в диалоговом окне (или, как исключение, в командной строке).
Остальные – в специальных файлах настроек параметров.
НАЛИЧИЕ «СПРАВОЧОГО БЮРО»
Наличие контекстной справочной документации к программе, где описывается
назначение программы и область применения, режимы работы, действия пользователя,
ограничения и др.
СКОРОСТЬ ВЫПОЛНЕНИЯ
Код программы следует оптимизировать, особенно в критических точках (обработка
больших списков и циклов др.).
ИСПРАВЛЕНИЕ ОШИБОК
С благодарностью принимать замечания и предложения пользователей программы,
в короткие сроки вносить изменения и дополнения в код, интерфейс,
документацию и сообщать об этом пользователям.
ПОСТОЯННО УЧИТЬСЯ
Изучать коды программ других авторов. Народ всегда умней.
ТОЛЬКО НЕОБХОДИМАЯ ДОСТАТОЧНОСТЬ
Вовремя останавливаться, дополняя параметры и режимы работы программы.
Не превращать прикладную программу во второй AutoCAD.
НЕ ЗАНИМАТЬСЯ "ВЫЛИЗЫВАНИЕМ"
Лучшее - враг хорошего. Не стоит раз за разом переделывать код работоспособной программы без веских причин. Например, только потому, что узнал более красивый код. Обязательно появятся новые ошибки.
Все что можно сделать с помощью команд AutoCAD – лучше делать, но помнить
о том, что гораздо быстрее создаются объекты программными методами (например
через функцию entmake).
|