|
UniWidgets
1.0.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 Кроме приведенного в примере, конечно должны быть комментарии.
#ifndef _INDICATORLOGIC_H #define _INDICATORLOGIC_H // ------------------------------------------------------------------------- #include <objects/AbstractLogic.h> #include <UniSetTypes.h> #include <global_macros.h> // ------------------------------------------------------------------------- namespace UniWidgets { class Indicator; class IndicatorLogic : public AbstractLogic { public: IndicatorLogic(); explicit IndicatorLogic(Gtk::EventBox::BaseObjectType* gobject); virtual ~IndicatorLogic(); virtual void connect(); protected: /* Methods */ virtual void on_init(); private: /* Variables */ Indicator* current_indicator_; /* Methods */ void constructor(); void init_value(); void set_value(const double value); void set_current_value(); /* Handlers */ void sensor_handler(UniSetTypes::ObjectId sensor, UniSetTypes::ObjectId node, float value); void set_sensor_handler(); DISALLOW_COPY_AND_ASSIGN(IndicatorLogic); /* Properties */ ADD_PROPERTY( value_ai, UniSetTypes::ObjectId ) ADD_PROPERTY( node, UniSetTypes::ObjectId ) }; }
Кроме приведенного в примере, конечно должны быть комментарии.
#include "IndicatorLogic.h" #include "SimpleObject.h" #include "Indicator.h" #include "types.h" #include <uniwidgets/ConfirmSignal.h> // ------------------------------------------------------------------------- using namespace std; using namespace UniWidgets; using namespace UniWidgetsTypes; using namespace UniSetTypes; // ------------------------------------------------------------------------- #define INDICATORLOGIC_VALUE_AI "value-ai" #define INDICATORLOGIC_NODE "node" // ------------------------------------------------------------------------- #define INIT_INDICATORLOGIC_PROPERTIES() \ value_ai(*this, INDICATORLOGIC_VALUE_AI, UniSetTypes::DefaultObjectId)\ ,node(*this, INDICATORLOGIC_NODE , UniSetTypes::DefaultObjectId) // ------------------------------------------------------------------------- void IndicatorLogic::constructor() { current_indicator_ = NULL; } // ------------------------------------------------------------------------- IndicatorLogic::IndicatorLogic() : Glib::ObjectBase("indicatorlogic") ,INIT_INDICATORLOGIC_PROPERTIES() { constructor(); } // ------------------------------------------------------------------------- IndicatorLogic::IndicatorLogic(Gtk::EventBox::BaseObjectType* gobject) : AbstractLogic(gobject) ,INIT_INDICATORLOGIC_PROPERTIES() { constructor(); } // ------------------------------------------------------------------------- ...
1.7.6.1