UniSet
1.4.0
|
Названия классов должны начинаться с большой буквы. Если название состоит из нескольких слов, то каждое слово начинается с большой буквы.
class MyNameClass { public: ... };
class MyNameClass { public: MyNameClass(): x(5) { } private: int x; };
Названия переменных и членов класса должны начинаться строчными буквами. Если название составное, то второе слово нужно писать с большой буквы.
int myVariableName;
Названия функций должны начинаться с маленькой буквы. Первым должен идти глагол. Если название составное, то второе слово нужно писать с большой буквы.
void printFunction(void); void debugInfo();
Названия файлов должны начинаться с большой буквы. Если в файлах описывается class MyNameClass
, то названия файлов должны быть соответственно MyNameClass.h
и MyNameClass.cc
. Что касается оформления см. Оформление заголовочных файлов и Оформление cpp-файлов
Определения макросов пишутся ЗАГЛАВНЫМИ БУКВАМИ (Кроме спец. макросов NameHeaderFile_H_
) Описание макросов лучше производить в заголовочном файле в начале (см. Оформление заголовочных файлов). Использование макросов не рекомендуется.
Названия констант и enum'ов начинаются с большой буквы.
const int MyConst; enum MyEnum { One, Two, Three };
Ширина текста программы не должна превышать 78 символов для возможности отображения на всех терминалах и печати на принтере. Отступы в программе должны формироваться исключительно знаками табуляции.
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;
Часто используемые локальные переменные рекомендуется называть короткими именами, такими как
Заголовочные файлы имеют расширение .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
Кроме приведенного в примере, конечно должны быть комментарии.
/*************************************************************************** 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 аналогично оформлению заголовочных файлов. (См. Оформление заголовочных файлов) Название интерфейса должно образовываться от названия и добавления к нему "_i", что означает интерфейсный класс.
Название класса реализации должно образовываться от названия интерфейса, исключив "_i".
Пример:
interface BaseProcess_i
{
...
}
class BaseProcess: public POA_BaseProcess_i, public ... { ... }
В общем случае классом родителем должен являться класс POA_имя_интерфейса. Этот класс генерируется автоматически и его описание находится в файле имя_интерфейса.hh . В особо оговариваемых случаях наследование может происходить от другого класса. Не исключается множественное наследование для добавления необходимых свойств и т.п. Вот пример наследования для реализации idl-интерфейса ContolProcess_i:
class ControlProcess: public BaseProcess, public POA_ControlProcess_i { ... }