UniSet  2.6.0
Некоторые соглашения о стиле написания

Названия

Названия Классов

Названия классов должны начинаться с большой буквы. Если название состоит из нескольких слов, то каждое слово начинается с большой буквы.

Обратите внимание, что public рекомендуется записывать с отступом перед ним.
class MyNameClass
{
public:
...
};
При записи конструктора инициализация членов класса должна записываться так:
class MyNameClass
{
public:
MyNameClass():
x(5)
{
}
private:
int x;
};

Названия переменных

Названия переменных и членов класса должны начинаться строчными буквами. Если название составное, то второе слово нужно писать с большой буквы.

Записывать переменные полностью маленькими буквами, разделяя слова подчёркиваниями, запрещается.
int myVariableName;

Названия функций

Названия функций должны начинаться с маленькой буквы. Первым должен идти глагол. Если название составное, то второе слово нужно писать с большой буквы.

Обратите внимание, что при вызове функций пробел между названием функции и скобками, содержащими параметры, не ставится. См. пример.
Называния функций полностью маленькими буквами с подчёркиваниями между словами допустимо только для тех классов, которые наследуются от библиотек, использующих аналогичную нотацию (например, 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 символов для
    возможности отображения на всех терминалах и печати на принтере.
    Отступы в программе должны формироваться исключительно
    знаками табуляции.
    \par
    Каждый может выбирать в настройках того редактора, который
    он использует, сколько пробелов (4 или 8) использовать
    знак табуляции. Рекомендуется 4 знака.
    В редакторе mcedit в меню Настройка->Разное должно быть
    отключено "Симулировать неполную табуляцию".
    \par
    Фигурные скобки во всех случаях записываются одна под другой.
    \par
    Условия. Скобки записываются через пробел после 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;
}

С короткими названиями лучше запись

if (a>b)
{
}

Присваивания записываются как

veryLongA = veryLongB;

для коротких переменных допустима запись

a=b;

Типы данных. Знаки, относящиеся к типу, записываются слитно с названием типа.

PointerToObject* p;
ReferenceToObject& r;

Часто используемые локальные переменные рекомендуется называть короткими именами, такими как

i,j для переменных цикла
p для указателя
it для итератора
obj для объекта

Оформление заголовочных файлов

Заголовочные файлы имеют расширение .h Кроме приведенного в примере, конечно должны быть комментарии.

/***************************************************************************
* This file is part of the UniSet* library *
* Copyright (C) 2002 SET Research Institute. All rights reserved. *
*/
/**************************************************************************/
#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-файлов

Кроме приведенного в примере, конечно должны быть комментарии.

/***************************************************************************
* This file is part of the UniSet* library *
* Copyright (C) 2002 SET Research Institute. All rights reserved. *
*/
/**************************************************************************/
#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
{
...
}