Ядро 3ОС. Система нотации



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

Основные требования, предъявляемые к системе нотации, можно сформулировать следующим образом:

Имена объектов кода (функций, структур, переменных) должны удовлетворять следующим критериям:

В общем случае имя объекта кода состоит из:

  1. префикса, несущего информацию о типе объекта (опционально)
  2. описания, отражающего смысл назначения объекта (присутствует всегда)
  3. суффикса, определяющего характер производимых объектом действий (опционально)

Используются следующие соглашения*:

  1. Составные типы данных (структуры кода) именуются с лидирующим префиксом, который состоит из одного или более строчных символов, соответствующих семантическому представлению базового типа объекта, отделенных от имени объекта символом подчеркивания:
  2. Локальные переменные кода именуются с префиксом, состоящим из одного или более строчных символов, соответствующих смысловому представлению базового типа объекта, при этом символ подчеркивания не ставится:
  3. Кроме того, имеется ряд дополнительных соглашений:
  4. Глобальные переменные кода именуются подобно локальным с дополнительным префиксом 'g_'
  5. Константы (const) именуются с префиксом 'k_'
  6. Макрокоманды именуются с префиксом 'm_'
  7. Функции префикса не имеют, однако могут иметь суффикс, обозначающий характер предполагаемых действий. За исключением булевых функций, которые именуются без суффикса, но с использованием префикса 'Is'

  8. * Приведенные правила именования объектов кода, как и любые другие правила, могут иметь исключения.

Примеры использования системы нотации можно найти в документации по разработке ядра 3ОС. Использование данной системы при разработке других модулей 3ОС носит рекомендательный характер.

Список используемых префиксов*

  c_      - class
  s_      - struct
  u_      - union
  e_      - enum
 
  b       - byte
  w       - word
  dw      - dword

  c       - char
  z       - char * 
  n       - int [long, ...]
  f       - float [double, ...]

  a[..]   - массив, где [..] - префикс типа
  p[..]   - указатель, где [..] - префикс типа
  v       - void *
  l       - bool

  k_      - константа   
  m_      - макрокоманда
  g_[..]  - глобальная переменная, где [..] - префикс типа


  * Для обозначения префиксов используются строчные литеры


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