Стандарты написания исходного кода в Delphi

Copyright © 2004 Вячеслав Колдовский

версия документа: 1.2 от 17 сентября 2004 г.

"иногда неважно, в какой степени правильным является подход, оказывается, что в большинстве случаев более эффективно придерживаться пусть и менее правильного, зато единообразного и продуманного подхода, чем в постоянном ожидании более правильного не придерживаться никакого вообще..."
эмпирически подтвержденная
собственная точка зрения автора

От автора.

Каждый раз, когда я открываю у себя на компьютере этот документ, у меня возникает желание его доработать. Обычно доработки проявляются в виде расширения уже написанного, внесения исправлений ошибок и уточнения неоднозначности. Бывает, что приходится выбирать чуть ли не наугад один из нескольких возможных вариантов написания кода только ради того, чтобы был "стандарт". Именно поэтому этот документ имеет номер версии и дату последней ревизии. Возможно, и публиковать его следует периодически.

Иногда ловлю себя на мысли, что подобную доработку можно продолжать еще очень долго, и нет гарантии, что по истечении этого продолжительного времени документ будет совершенен. Поэтому я вполне резонно ожидаю, что у подобного документа есть (и, пожалуй, будут всегда) недостатки. Можно высказать как предложения по его расширению, так и оспорить уже изложенные мысли. В любом случае я буду признателен за отклики читателей.

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

Так получилось, что первоначально этот документ компоновался в сжатые сроки из различных источников, потом прошел множество доработок, в результате которых уже очень тяжело выявить первоначальные источники тех или иных мыслей. Список (не полный) использованных источников приведен в конце документа, однако если кто-либо узнает свои мысли, и обоснованно потребует внесения своего труда в этот список, то я это сделаю безоговорочно и незамедлительно.

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

СОДЕРЖАНИЕ
  1. ФАЙЛЫ ИСХОДНОГО КОДА
    1.1. Структура папок проекта
    1.2. Именование исходных файлов
    1.3. Организация исходных файлов
    1.4. Директивы компилятора
    1.5. Директивы условной компиляции
    1.6. Секции определения типов и констант (Const, Var и Type)
    1.7. Копирайт и комментарий. Пример заголовка для модуля
    1.8. Объявление модуля
    1.9. Объявление используемых модулей
    1.10. Объявление классов и интерфейсов
    1.11. Структурные составляющие модулей и разделение алгоритмов
    1.12. Объявление параметров
    1.13. Инициализация глобальных переменных
    1.14. Коллизии, связанные с именами
    1.15. Формы, создаваемые автоматически
    1.16. Функции реализации модальных форм
  2. СОГЛАШЕНИЕ ОБ ИМЕНОВАНИЯХ
    2.1. Именование модулей
    2.2. Именование форм и модулей данных
    2.3. Именование классов и интерфейсов
    2.4. Именование полей
    2.5. Именование методов
    2.6. Именование переменных
    2.7. Нотация (префиксы) для именования переменных (экземпляров объектов) в зависимости от типа
    2.8. Именование глобальных констант
    2.9. Зарезервированные слова
    2.10. Объявление типов и экземпляры переменных определенных типов
    2.11. Перечислимые типы
    2.12. Строковые ресурсы
    2.13. Исключения
  3. ИСПОЛЬЗОВАНИЕ ПРОБЕЛОВ И ОТСТУПОВ
    3.1. Использование пустых строк
    3.2. Использование пробелов
    3.3. Пробелы, запрещенные к использованию
    3.4. Использование отступов
    3.5. Перенос строк
    3.6. Локальные процедуры
  4. КОММЕНТАРИИ
    4.1. Общие Рекомендации по комменированию исходного кода
    4.2. Блочные комментарии
    4.3. Однострочные комментарии
  5. КЛАССЫ
    5.1. Структура тела класса
    5.2. Уровни доступа
    5.3. Объявление конструктора
    5.4. Объявление методов
  6. ИНТЕРФЕЙСЫ
  7. ОПЕРАТОРЫ
    7.1. Простые операторы
    7.2. Составные операторы
    7.3. Присвоения и выражения
    7.4. Объявление локальных переменных
    7.5. Объявление массивов
    7.6. Оператор if
    7.7. Оператор for
    7.8. Оператор while
    7.9. Оператор repeat until
    7.10. Оператор case
    7.11. Оператор try
  8. ТРЕБОВАНИЯ ДЛЯ ФОРМИРОВАНИЯ КРИТИЧЕСКИ ВАЖНОГО К ПРОИЗВОДИТЕЛЬНОСТИ КОДА
    8.1. Оператор if
    8.2. Порядок следования параметров
    8.3. Параметры-константы
    8.4. Типы значений с плавающей точкой
    8.5. Типы Variant и OleVariant
  9. ОБЩИЕ РЕКОМЕНДАЦИИ К ПОСТРОЕНИЮ ПРИЛОЖЕНИЯ
    9.1. Хранение и доступ к параметрам настройки приложения
    9.2. Транзакции
    9.3. Поддержка многопользовательской среды
    9.4. Поддержка исполнения в сетевой среде
  10. ИЗБЕЖАНИЕ НАИБОЛЕЕ РАСПРОСТРАНЕННЫХ ОШИБОК
    10.1. Сравнение переменных с плавающей запятой
    10.2. Сравнение строк
  11. ДОПУСТИМЫЕ ИСКЛЮЧЕНИЯ
    11.1. Максимальная длина строки кода
    11.2. Соглашение об именовании переменных
  12. ДОКУМЕНТИРОВАНИЕ ПРОЕКТА
    12.1. Паспорт проекта
  13. ССЫЛКИ НА ИСТОЧНИКИ
  14. ПРИЛОЖЕНИЯ
    Приложение А. "Паспорт проекта"

Copyright © 2004 Вячеслав Колдовский   Специально для Delphi Plus