Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

CodeRules_M102

.pdf
Скачиваний:
13
Добавлен:
03.06.2015
Размер:
235.11 Кб
Скачать

M102 (Правила кодирования,Полевой Д.В.) 05.02.10 стр. 21 из 23

116.Определение методов и статических данных класса размещайте в одноименном файле реализации. Если определения необходимо разместить в заголовке, то это должно делаться отдельно после объявления.

ПРАВИЛЬНО

НЕПРАВИЛЬНО

 

 

// In median.h

// In median.h

 

int findMedian(int* pData, int cnt)

int findMedian(int* pData, int cnt);

{

 

// ...

// In median.cpp

}

int findMedian(int* pData, int cnt)

 

{

 

// ...

 

}

 

 

 

// In cmyclass.h

// In cmyclass.h

class CMyClass

class CMyClass

{

{

public:

public:

int getValue ();

int getValue ()

private:

{

int m_value;

return m_value;

};

}

 

private:

// In CmyClass.cpp

int m_value;

#include "CMyClass.h"

};

int

 

CMyClass::getValue ()

 

{

 

return m_value;

 

}

 

 

 

// In cstringvalue.h

// In cstringvalue.h

template<typename T>

template<typename T>

class CStringValue

class CStringValue

{

{

public:

public:

CStringValue(const T& value);

CStringValue(const T& value)

//...

{

};

//...

 

}

template<typename T>

//...

CStringValue::CStringValue(const T&

};

value)

 

{

 

// ...

 

}

 

 

 

117.Используйте префикс m_ для членов-данных.

 

ПРАВИЛЬНО

НЕПРАВИЛЬНО

 

 

class СSomeClass

class СSomeClass

{

{

...

...

private:

private:

int m_size;

int size;

};

};

 

 

предложения/пожелания и сообщения об очепятках присылать на oop.misis [тузик] gmail.com

M102 (Правила кодирования,Полевой Д.В.)

05.02.10

стр. 22 из 23

118.Используйте префиксы get/set для методов доступа к членам

 

ПРАВИЛЬНО

НЕПРАВИЛЬНО

 

 

 

 

class СSomeClass

class СSomeClass

 

{

{

 

public:

public:

 

int getSize();

int& size();

 

void setSize(const int size);

...

 

...

};

 

};

 

 

 

 

 

119.Выбирая имя для метода помните, что при вызове имя экземпляра уже известно. В именах методов не должно быть явного имени класса.

ПРАВИЛЬНО

НЕПРАВИЛЬНО

 

 

line.getLength();

line.getLineLength();

 

 

120.Используйте константность (const) везде, где только это возможно.

Если функция-член класса не вносит изменения в объект, используйте константный метод класса.

Если член класса не изменяется с момента создания объекта, используйте константный член класса.

ПРИМЕР

class СSomeClass

{

public:

СSomeClass(const int size); int getSize() const;

private:

const int m_size;

};

СSomeClass::СSomeClass(const int size) : m_size(size)

{

// ...

}

int

СSomeClass::getSize() const

{

return m_size;

}

121.Используйте виртуальные деструкторы в базовых классах.

122.Не вызывайте виртуальные функции из конструкторов и деструкторов.

123.Используйте механизм friend только при наличии веского основания (обоснованная оптимизация).

124.Избегайте обращения к переменным уровня модуля из конструктора класса.

предложения/пожелания и сообщения об очепятках присылать на oop.misis [тузик] gmail.com

M102 (Правила кодирования,Полевой Д.В.)

05.02.10

стр. 23 из 23

Исключения

125.Блок try-catch оформляется в соответствии с общим принципом оформления блоков следующим образом.

ШАБЛОН

try

{

// statements

}

catch (Exception& exception)

{

// statements

}

126.Используйте для исключений классы-наследники от std::exeption.

127.В именах классов-исключений используйте суффикс Exception.

предложения/пожелания и сообщения об очепятках присылать на oop.misis [тузик] gmail.com

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]