Обновлено 30.01.2009 Автор: Administrator
Если вы занимаетесь программированием, то на каком языке вы бы не писали - всегда есть общие идеи и концепции,следование которым облегчит работу. Вот мой взгляд на основные правила при программировании.
0. САМЫЙ главный приоритет при разработке любой программы – это сохранение способности к развитию и повторному использованию. На практике только повторное использование кода может выявить ошибки и улучшить структуру (например, появление старых данных, но уже «нового» типа). Хорошая программа модифицируется перманентно.
Возможность повторного использования должна облегчать модульная структура программы (инкапсуляция и интерфейсы). Например, главное преимущество ООП – это возможность:
а) безопасной (прежний не портится) модификации УЖЕ существующего кода,
б) возможность модификации и без исходного кода.
С другой стороны, связывание данных и процедур для их обработки неизбежно ухудшает модульность.
С этой точки зрения главные требования к языку программирования (или стилю, которого следует придерживаться) –
- хорошая читаемость;
- замкнутость (явность кода);
- быстрота компиляции проекта в целом, чтобы сразу увидеть результаты модификации.
1.Оформление отдельных функций.
- Пессимистическая точка зрения на входные переменные.
- bool тип функций с изначальным результатом FALSE.
- Обязательное присваивание значений выходным переменным в самый первый момент входа в функцию.
- Желательность присваивания выходных переменных в самом конце, а в теле функции работа происходит с «внутренними копиями этих переменных», так чтобы вызывающая функция получила NIL в качестве результата, если в теле функции произошла ошибка.
- Широкое использование обработки исключений. Сообщения об ошибке должны однозначно указыват место в коде, где произошел сбой. Обычно, предполагают, что обработка исключений – это дело внешней, вызывающей функции. Однако для поддержки модульной структуры желательно обработать ошибку внутри.
- При ручном управлении памятью -- постоянное использования предварительного заполнения NULL.
2.Соглашения об именах переменных.и функций
- Все глобальные переменные имеют начало “Gl”.
- Следовать стандартным наименованиям функций: Free,Create,Init, Get, Set, Is и т.д.
3.Методы фиксации ошибок.
- Отладчик.
- Организация потока сообщений об ошибках. Разные типы ошибок – идентификаторы опасных ошибок.
- Использование trace файлов – чтобы грубо локализовать место краха.
- Инструменты контроля утечек памяти (при ручном управлении памятью).
- Assertions.
- Способ согласования версий dll: хранение SizeOf(UsedRecord) как поля в записи передаваемой на вход dll.
4. Пожалуй наиболее простой способ решить каким должен быть интерфейс, это "поиграться" с ним: написать примеры кода, который будет использовать этот модуль, до написания самого модуля. Эти "ненастоящие" примеры не пропадут, когда вы закончите разработку модуля. Вы можете просто переделать эти примеры в демо-программы, примеры для документации или использовать в качестве тестов для модуля. Ключевой принцип в том, чтобы писать код так, словно модуль уже существует, и подразумевая, что модуль имеет такой интерфейс, который наиболее удобен.
< Предыдущая | Следующая > |
---|