- Заметки
- Для автоматического форматирования проектов рекомендуется использовать программу astyle.
Названия
Названия Классов
Названия классов должны начинаться с большой буквы. Если название состоит из нескольких слов, то каждое слово начинается с большой буквы.
- Обратите внимание, что public рекомендуется записывать с отступом перед ним.
class MyNameClass
{
public:
...
};
При записи конструктора инициализация членов класса должна записываться так: class MyNameClass
{
public:
MyNameClass():
x(5)
{
}
private:
int x;
};
Названия переменных
Названия переменных и членов класса должны начинаться строчными буквами. Если название составное, то второе слово нужно писать с большой буквы.
- Записывать переменные полностью маленькими буквами, разделяя слова подчёркиваниями, запрещается.
Названия функций
Названия функций должны начинаться с маленькой буквы. Первым должен идти глагол. Если название составное, то второе слово нужно писать с большой буквы.
- Обратите внимание, что при вызове функций пробел между названием функции и скобками, содержащими параметры, не ставится. См. пример.
- Называния функций полностью маленькими буквами с подчёркиваниями между словами допустимо только для тех классов, которые наследуются от библиотек, использующих аналогичную нотацию (например, gtk–)
void printFunction(void);
void debugInfo();
Названия файлов
Названия файлов должны начинаться с большой буквы. Если в файлах описывается class MyNameClass
, то названия файлов должны быть соответственно MyNameClass.h
и MyNameClass.cc
. Что касается оформления см. Оформление заголовочных файлов и Оформление cpp-файлов
Название макросов
Определения макросов пишутся ЗАГЛАВНЫМИ БУКВАМИ (Кроме спец. макросов NameHeaderFile_H_
) Описание макросов лучше производить в заголовочном файле в начале (см. Оформление заголовочных файлов). Использование макросов не рекомендуется.
Название констант и enum'ов
Названия констант и enum'ов начинаются с большой буквы.
const int MyConst;
enum MyEnum { One, Two, Three };
Форматирование
Ширина текста программы не должна превышать 78 символов для возможности отображения на всех терминалах и печати на принтере. Отступы в программе должны формироваться исключительно знаками табуляции.
- Каждый может выбирать в настройках того редактора, который он использует, сколько пробелов (4 или 8) использовать знак табуляции. Рекомендуется 4 знака. В редакторе mcedit в меню Настройка->Разное должно быть отключено "Симулировать неполную табуляцию".
- Фигурные скобки во всех случаях записываются одна под другой.
- Условия. Скобки записываются через пробел после if. Не используйте лишних скобок при записи || и &&
function (void)
{
body of the function;
if( a > b || a < c )
{
body of the condition;
}
else if( x > y )
{
body of the not condition;
}
}
При длинных названиях переменных рекомендуется записывать содержимое круглых скобок как в примере ниже
if( veryLongA > veryLongB )
{
body of the condition;
}
С короткими названиями лучше запись
Присваивания записываются как
для коротких переменных допустима запись
Типы данных. Знаки, относящиеся к типу, записываются слитно с названием типа.
PointerToObject* p;
ReferenceToObject& r;
Часто используемые локальные переменные рекомендуется называть короткими именами, такими как
- i,j для переменных цикла
- p для указателя
- it для итератора
- obj для объекта
Оформление заголовочных файлов
Заголовочные файлы имеют расширение .h Кроме приведенного в примере, конечно должны быть комментарии.
#ifndef MyNameClass_H_
#define MyNameClass_H_
#include <std.h>
#include <...>
#include "myInclude.h"
#include "..."
#define MY_DEFINE (x) x
const float MyPI = 3.14;
enum MyEnum
{
En1,
En2,
En3
};
class MyNameClass
{
public:
...
protected:
...
private:
...
};
#endif
- Заметки
- Большая просьба ко всем разработчикам избегать глобальных Enum-ов (как в примере), дабы избежать в последствии ошибок.
Оформление cpp-файлов
Кроме приведенного в примере, конечно должны быть комментарии.
#include <std.h>
#include <...>
#include "MyNameClass.h"
#include "..."
void MyNameClass::func1(void)
{
...
}
void MyNameClass::func2(void)
{
...
}
...
Написание интерфейсов на языке IDL
Общая часть
Названия интерфейсов(классов), функций и переменных см. Названия. Оформление файла IDL аналогично оформлению заголовочных файлов. (См. Оформление заголовочных файлов) Название интерфейса должно образовываться от названия и добавления к нему "_i", что означает интерфейсный класс.
Имена классов реализаций
Название класса реализации должно образовываться от названия интерфейса, исключив "_i". Пример:
- объявление на IDL
interface BaseProcess_i
{
...
}
- объявление класса реализации
class BaseProcess:
public POA_BaseProcess_i,
public ...
{
...
}
Класс родитель для реализации
В общем случае классом родителем должен являться класс POA_имя_интерфейса. Этот класс генерируется автоматически и его описание находится в файле имя_интерфейса.hh . В особо оговариваемых случаях наследование может происходить от другого класса. Не исключается множественное наследование для добавления необходимых свойств и т.п. Вот пример наследования для реализации idl-интерфейса ContolProcess_i:
class ControlProcess:
public BaseProcess,
public POA_ControlProcess_i
{
...
}