C++编程规范头文件格式和函数注释格式

更新时间:2023-07-21 15:17:55 阅读: 评论:0

C++编程规范头⽂件格式和函数注释格式
当你阅读别⼈的代码时如果没有注释那会是件⽐较痛苦的事.⼀说到注释我们马上想到是通过//或/* */这样来添加⼀些描述信息.这只是狭义的注释.
⼴义的注释我们可以理解为,任何有助于理解代码的信息都可以看成注释.
我们可以把写代码和写⽂章类⽐下.⾃然语⾔会有词法,句法,语义这⼏个概念.代码中的语法和句法就相当于⼀个编程语⾔中的基本语法规范.这是我们学习⼀门编程语⾔必须掌握的.所以注释的时候⼀般不会涉及到这些信息.
注释主要涉及到语义的描述.语义从⼤的⽅向,软件产品⾯向的应⽤来说,就是要解决的问题本⾝的逻辑,如果是些应⽤软件也可以叫业务逻辑.我们把业务逻辑理清头绪后就会来个啥数据建模之类的.然后写设计⽂档之类的,有啥概要设计与详细设计,这些⽂档可以看成⾮常重要的注释.
然后就是写到代码⾥的注释了,通过//或/* */标识出来.还有⼀种注释叫⾃我注释,就是通过函数或变量名字就得得到⼀些有⽤的信息
这⾥主要讲下⽤//或/* */做的注释
⽤// 还是/* */就看你⾃⼰的偏好了.最重要的是保持⼀致,就是在⼀个项⽬中⼤家达成⼀致,全部⽤哪⼀种或者在某个地⽅⽤//,另外的地⽅⽤/* */注释的位置及常见内容
1.⽂件注释
在C++的代码都是分布在⼀个个的头⽂件和源⽂件中,如果是⽤的VS则是h后缀⽂件和cpp后缀⽂件. 当然了有时你⽤以内联函数还可能会有inl ⽂件.每个⽂件的开头部分你可以添加注释信息.
内容⼀般是:版权,作者,编写⽇期,功能描述.例如
/**************************************************************************
Copyright:MyCompany
Author: Arwen
Date:2013-01-09
Description:Provide  functions  to connect Oracle
好看的玄幻小说推荐
**************************************************************************/
或者
//Copyright:MyCompany
//Author: Arwen
//Date:2013-01-09
//Description:Provide functions to connect Oracle
有时如果修改了代码,还可以添加修改⼈,⽇期,修改内容有⽬的这些信息.
2.类注释
⼀般是简单的说下这个类的功能,如果你在⽂件开头已经描述了这⾥也可以省略.如果要注释的话就可以这样简单的描述下.
// COleDataObject -- simple wrapper for IDataObject
class COleDataObject
{
}
或者
/*COleDataObject -- simple wrapper for IDataObject*/
3.函数注释
描述函数的功能及参数,其他相关信息.例如
//Summary:  connect the databa
//Parameters:
//      connInfo:A class contains the connect info ,such as ur name ,pwd,etc.
//      directConnect : u TNS name or u direct connection info
//Return : true is connect successfully.
bool ConnectDataba(ConnectInfo connInfo, bool directConnect);
或者
/*
小孩补锌吃什么好*Summary: connect the databa
*Parameters:
虎虾鱼*    connInfo:A class contains the connect info ,such as ur name ,pwd,etc.*
*    directConnect : u TNS name or u direct connection info
*Return : true is connect successfully.
*/
4.变量注释
⼀个变量如果代表的意思不容易从变量名看出来,⽽且⼜挺重要的话最好也加点注释.例如
UINT m_nGrowBy;    // number of cache elements to grow by for new allocs
或者
UINT m_nGrowBy;    /* number of cache elements to grow by for new allocs*/
5.实现注释
在⼀些逻辑性很强,不容易理解的代码块前添加注释.特别是是像⼀些算法,看起来就⼏⾏,但想个半天都未必明⽩到底是啥意思来着.例如
// copy elements into the empty space
while (nCount--)
三民主义的内容
m_pData[nIndex++] = newElement;
还有就是如果想针对函数的某些个参数做些注释,那最好把参数分⼏⾏写.
void MyFunction(string name, //This is my name
int age)
另外有时⼀个函数很长,⾥⾯有奶多个⼤括号{ } ,这样⼀嵌套,有时你不知道谁对应谁了,你要往⾥⾯插⼊代码就容易出错.你也可以在些结尾的⼤括号加个注释,表明它是哪个if或while语句的结束处.
在C#中是可以通过#region 加 #endregion 来做注释.同时开发环境VS能提供⽀持让你⽅便的折叠这样注释的代码.
VS也⽀持在C++中通过#pragma region 与 #pragma endregion 来做注释,但这在其它编译器中不会被识别,所以需要考虑到跨平台的话或者会使⽤不同的编译器的话就最好别⽤.
6.TODO 注释
todo的意思就是待做的事.⽐如你代码写了⼀半,然后下班了.为了⽅便你第⼆天很快的找到那具体地⽅,或者防⽌你忘记.就可以⽤todo注释下.因为⼀些开发环境提供了对它的⽀持,可以让你⽅便的找到哪些个地⽅有todo注释,起个书签的作⽤.你选View-->Task List,然后在下⾯的下拉列表中选择comments就会列出所有TODO注释信息.
另外你也可以写个TODO留着以后实现那功能也⾏,注释信息⼀般可以写上你的名字和邮箱,然后说下待实现的功能或其他事项
如果你代码中的变量名,函数数,类名都取得很好,不仅是个有意义的词或短语,⽽且确切的表达了该
变量或函数的功能.那读起代码来就像看⽂章⼀样,绝对是⼀种享受.当然理想是美好的,现实可是残酷的.很少有⼈能做到这样.⼀来嘛你英语词汇量得多,不样不容易找到那么多合适并贴切的词.⼆来就是有些词组合就会很长,这样不得不⽤些缩写,⽽缩写就不是每个⼈都认识,对⼀些⼈来说和⽆意义的字母没啥区别,只要你英语好才能⼀眼瞧出来.
当然当你使⽤⼀个编程语⾔的话,⾥⾯已经弄出很多词来做关键字了,当你看熟了看多了后就会看着很舒服很顺眼.但如果你学个啥框架,⽐如MFC,突然发现那么多宏名,还有⼀些类型名(其实也是宏转换整出来的). 就会觉得⾮常不顺眼,⾮常丑陋.这些类型名⼤部分是⼀些缩写,虽然是代表着确切的意思,但由于缩写的太厉害了,你跟瞧着⼀堆没意义的字母没啥区别.当然你要⽤多了看着也就顺眼了.
关于命名有两个⽐较出名的专业名词:Hungarian(匈⽛利) , Camel(骆驼) , Pascal(帕斯卡)
匈⽛利命名法
变量名=属性+类型+对象描述.
例如int m_iNumber;
如果是局部变量⼀般就不需要属性了,所以就是int iNumber;
1.其中对象描述的名称都要求有明确含义,可以取对象名字全称或名字的⼀部分.可以起⾃解释的作⽤,从名字中就可以看出变量的功能.
2.其中属性(有个下划线)包括: g_表⽰全局变量,  c_表⽰常量 , m_表⽰C++类成员变量, s_ 表⽰静态变量 , sm_表⽰静态成员变量
3.类型部分都是⽤类型关键字的缩写表⽰:
类型名缩写
char c
short s
int i
long l
unsigned
uc
char
unsigned
us
short
unsigned int ui
unsigned long ul
float f
double d
long double ld
bool b
void v
pointer p
enum n
struct x
union w
array a家用空调清洗
windows类型
兴于诗
string sz
DWORD dw
HANDLE h
TCHAR tc
WCHAR wc
smart pointer sp
LPSTR pc
LPTSTR ptc
LPWSTR pwc
据说这种命名法是⼀们叫Charles Simonyi的匈⽛利程序员发明的,他也在微软⼯作过.所以你查看MFC中的⼀些源码会发现都⽤的匈⽛利命名法,你要是开发中⽤到MFC可能也倾向于使⽤这种命名规范.
优点与缺点:
匈⽛利命名的优点显⽽易见,能从名字本⾝获取到很多信息,知道变量的类型或要实现的功能.
缺点是添加这些前缀会使变量名变长,变量名⼀长就会显得不雅,另外就是开发⼈员要多敲⼏个字母.当然还有其他很多缺点.
另外就是匈⽛利命名主要针对基本类型变量名,但在⾯向对象语⾔中肯定到处是类名和函数名,那类名和函数名该怎么取呢? 此时在它们前⾯加个啥前缀没有太多意义的.
此时变量名=属性+类型+对象描述 ,中最有对象描述这⼀项可派得上⽤场了,但是对象描述可没给我们带来啥明确的格式指导,⽐如描述信息⼀长,就很不利于我们眼睛的识别.
于是就需要⼀些规范应⽤于对象描述的格式,另外⼀些命名规范就出现了.
驼峰命名法
骆驼有⼀个很明显的特征就是背像个⼭峰⼀样,有凹下去与凸起来的部分.
于是这种命名法就借鉴了这个特征,让变量名通过某些字母⼤写来达到凹凸的效果,这有利于眼睛识别,因为如果都是⼩写或⼤写都不利于眼睛识别.
⼩驼峰命名法
除第⼀个单词⾸字母⼩写,其他单词⾸字母⼤写.
例如 int myPhoneNumber;
⼤驼峰命名法(⼜叫Pascal法)
所以单词⾸字母⼤写
例如 void GetPhoneNumber();
中秋节的来历和习俗实际上驼峰命名法与匈⽛利命名法并不冲突,有时还可以综合使⽤.
匈⽛利法是
变量名=属性+类型+对象描述
我们可以让前两者不变,只在对象描述中应⽤驼峰法.当然了也可以中单独使⽤驼峰法,不需要属性和类型信息.
在C#中基本上习惯上只使⽤驼峰法,不再需要属性或类型的信息.因为VS这开发环境的智能感觉⽀持的⾮常好,你把⿏标放哪个变量上会马上显⽰出类型等相关信息.⽽且由于C#中在隐式类型转换时要求较严,必须是精度不会降低,不会出现溢出.所以类型信息对我们⽤处也不是太⼤了.最重要的是对象描述的功能性信息了.
津津有味反义词
⼀般函数名和类名都⽤⼤驼峰命名法,不过在MFC中类名⼀般推荐是匈⽛利与驼峰结合的变体,类前⾯加⼀个⼤写的字母C,后⾯部分就是⼤驼峰法了
下划线命名法
就是单词之间⽤下划线连接
⽐如int MY_NUMBER;

本文发布于:2023-07-21 15:17:55,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1090701.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:注释   描述   类型
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图