什么样的代码格式是正确的?相信这个问题很难回答,每个人都有自己的习惯,作者就自己对于代码风格的理解整理如下:
1. 优秀的代码必须足够简洁,用最少的代码实现最多的功能,不冗余;
2. 良好的代码风格是易读的,包括良好的命名和一定的注释;
3. 良好的代码风格必须是模块化的,功能单一且没有歧义;
我们来看以下一段代码:
/** 可选项*/
const int TYPE_USER = 1; /**< 用户*/
const int TYPE_SYSTEM = 2; /**< 系统*/
const int TYPE_MACHINE = 4; /**< 机器*/
ClassA::ClassA(int _id)
:ID(_id)
,m_strName("Linolzhang")
,m_bValid(true)
{
}
bool addToLabel()
{
if("Linolzhang"==m_strName)
return false;
// 添加
_addToLabel(m_strName);
return true;
}
我们能够从中看到 1)宏定义 2)小驼峰命名 3)初始化列表 4)简洁注释
那么从管理者的角度,需要什么样级别的代码风格约定呢?作者认为,不要太多,主要的地方约束到即可,否则容易产生抵触情绪,好的方式还是通过更多的团队成员之间互相阅读源码来达到逐步统一的目的,这种影响往往是不经意间发生的,ok,那么开始互相Review代码,让你们的Code越来越有夫妻相吧。
给出作者认为合理的代码约束规范:
/*******************************************************************************
* @file $FILE_BASE$.$FILE_EXT$
* @brief ClassName类定义
* @author Linolzhang
* @date 2017-1-1
* @version 0.1
* @copyright Linolzhang
* 其它说明:
* 使用样例:
* --------------------------------------------------
* 修订情况:
* 版本 作 者 完成日期 修改内容
* V1.0 $Author$ $YEAR$-$MONTH$-$DAY$
*******************************************************************************/
头文件类格式定义
namespace nm{
/**枚举类型大写*/
#enum WEEK_DAY { SUN, MON, TUE, WED, THU, FRI, SAT };
/**代码格式示意,定义类A*/
class DefinedClassA : public ClassA
{
public:
/**构造函数*/
DefinedClassA();
/**析构函数*/
~DefinedClassA();
public:
/**成员函数,行列排序*/
bool callMethod1(int nCol,int nRow);
/**成员函数,首字母小写*/
void callMethod2(const std::map<int>& mapNum);
/**静态函数,首字母大写*/
static void CallMethod3(const char* strName);
protected:
/**内部调用方法1,返回列表大小*/
int _callMethod4() { return m_listNum.size(); };
protected:
int m_nNum; /**< number*/
float m_fNum; /**< float number*/
double m_dNum; /**< double number*/
std::string m_strName; /**< std string*/
std::vector<int> m_vecNum; /**< vector*/
std::list<int> m_listNum; /**< list*/
DefinedClassB m_DefClassB; /**< class member*/
DefinedClassC* m_pDefClassC; /**< class member pointer*/
static int m_nSTNum; /**< static member*/
};
/**全局变量定义,计数器*/
long g_nTotalCount;
}//namespace zUtil
cpp类格式定义
/** Constructor*/
DefinedClassA::DefinedClassA()
{
}
DefinedClassA::~DefinedClassA()
{
}
/**
* 成员函数,行列排序
* @param nCol the first argument
* @param nRow the second argument
* @return The bool result
*/
bool DefinedClassA::callMethod1(int nCol,int nRow)
{
if(0==nCol || 0==nRow) // 判断相等时数字放前
return false;
else // 括号上下成对出现,只有一行代码可以不加括号
{
}
}
/**
* 成员函数,形参 const 引用调用
* @param mapNum a map list
*/
void DefinedClassA::callMethod2(const std::map<int>& mapNum)
{
}
///
// 类间划分