CodeRules_M102
.pdfM102 (Правила кодирования,Полевой Д.В.) 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