文档介绍:软件开发规范
C++命名规范
在研究项目团队协作开发的情况下(这里的团队协作也适合于应用项目的开发),编程时应该强调的一个重要方面是程序的易读性,在保证软件速度等性能指标能满足用户需求的情况下,能让其他程序员容易读懂你所编写的程序。若研ne”后以TAB键代替SPACE键做空格;如果头文件名称是由多个单词组成,则各单词间以下划线“_”连接,例如有头文件名称为“”,则定义如下:“#ifndef_FILE_SYSTEM_H_”;
用#include<>格式来引用标准库的头文件(编译器将从标准库目录开始搜索);
用#include“”格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索);
头文件中只存放“声明”而不存放“定义”;头文件中应包含所有定义文件所定义的函数声明,如果一个头文件对应多个定义文件,则不同定义文件内实现的函数要分开声明,并作注释以解释所声明的函数从属于那一个定义文件;宏定义和函数声明分离,在两个头文件中定义,如果没有类成员函数,可以将类和结构的定义与函数声明分离,也就是说一个头文件专用于宏定义,一个头文件专用于类和结构的定义,一个头文件专用于函数声明;
在C++语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。
头文件的结构如下:
//文件信息声明见示例1-1,此处省略。
#ifndef_FILE_SYSTEM_H_//avoidreferencingthefilefilesystemrepeat#define_FILE_SYSTEM_H_
#include<〉
//referencestandardheadfile
#include“"
//referencenon-standardheadfile
voidFunctionl(…);
//globalfunctiondeclare
定义文件的结构
定义文件有三部分内容:
(1)定义文件开头处的文件信息声明(参见示例1-1);
(2)对一些头文件的引用;
(3)程序的实现体(包括数据和代码)。
,定义文件的结构参见示例1-3。//文件信息声明见示例1-1,此处省略。
#include“”/referenceaheadfile
•••
//globalfunctionrealization
voidFunctionl(…)
{
•••
}
//classmemberfunctionrealization
voidCBox::Draw(…)
{
•••
}
示例l-3C++/C定义文件的结构
头文件的作用
早期的编程语言如Basic、Fortran没有头文件的概念,C++/C语言的初学者虽然会用使用头文件,但常常不明其理。这里对头文件的作用略作解释:
(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码;
(2)头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。
目录结构
如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维
护。
例如可将头文件保存于include目录,将定义文件保存于source目录(可以是多级目录)。如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。
命名规则
比较著名的命名规则当推“匈牙利”命名法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。如果一个变量由ppch开头,则表明它是指向字符指针的指针。
“匈牙利”法最大的缺点是烦琐,例如
inti,j,k;
floatx,y,z;倘若采用“匈牙利”命名规则,