最近在看林锐博士的《高质量程序设计指南》一书,看到不少感觉有用的东西,在此简要记录一下。
头文件版式
头文件应该包含的内容有:
- 头文件注释(文件说明、功能描述、版权声明等)--必须有
- 内部包含卫哨开始(#ifndef XXX/#define XXX)--必须有
- #include其他头文件--如果需要
- 外部变量和全局函数声明--如果需要
- 常量和宏定义--如果需要
- 类型前置声明和定义(class A;)--如果需要
- 全局函数原型和内联函数的定义--如果需要
- 内部包含卫哨结束(#endif)--必须有
- 文件修改记录
其中,头文件注释示例如下:
/************************************************************************ * Copyright(c) 2011-2012 Company Name * All Right Reserved * * 文件名称: filename.h * 简要描述: 简述文件内容、功能 * * 当前版本: 1.2 * 作者/修改者: * 完成日期: * 修订说明: * * 取代版本: 1.0 * 修 改 人: * 完成日期: * 修订说明: ************************************************************************/
源文件版式
源文件应该包含的内容有:
源文件注释(文件说明、功能描述、版权声明等)--必须有 预处理命令--如果需要 常量和宏定义--如果需要 外部变量的声明和全局变量的定义及初始化--如果需要 成员函数和全局函数的定义--如果需要 文件修改记录函数头需要有函数头注释,如:
/************************************************************************ * 函数名称: 函数名 * 功能描述: 简述函数功能 * 参数列表: Param1---描述 * Param2---描述 * Param3---描述 *返回结果: 描述返回值的情况 ************************************************************************/
函数注释应当放在函数之前,对于功能简单的函数,可以只用一行注释简单描述其作用或直接不加注释。
ADT/UDT版式
ADT/UDT(例如类)的版式主要有2种:
private在前,这种通常是“以数据为中心”来设计ADT/UDT,重点关注内部结构; public在前,这种通常是“以行为为中心”来设计ADT/UDT,重点关注其提供的接口(或服务)。建议采用后一种“以行为为中心”的版式,因为这样可以让自己在设计类时思路清晰,而且方便别人阅读。
以数据为中心的版式:
class A { private: int i; int j; ... public: void Func1(void); void Func2(void); ... };
以行为为中心的版式:
class A { public: void Func1(void); void Func2(void); ... private: int i; int j; ... };