C、C++编程修养.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
32个编程修养 1、版权和版本 好的程序员会给自己的每个函数,每个文件,都注上版权和版本。 对于C/C++的文件,文件头应该有类似这样的注释: /************************************************************************ *???文件名:network.c *???文件描述:网络通讯函数集 *???创建人: Hao Chen, 2003年2月3日 *???版本号:1.0 *???修改记录: ************************************************************************/ 2、缩进、空格、换行、空行、对齐 i) 一个缩进一般是一个TAB键或是4个空格。(最好用TAB 键) ? ii) 空格。有效的利用空格可以让你的程序读进来更加赏心悦目。一般来说,语句中要在各个操作符间加空格,函数调用时,要以各个参数间加空格。 iii) 对齐。用TAB键对齐你的一些变量的声明或注释,一样会让你的程序好看一些。 3、程序注释 一般来说你需要至少写这些地方的注释:文件的注释、函数的注释、变量的注释、算法的注释 、功能块的程序注释。主要就是记录你这段程序是干什么的?你的意图是什么?你这个变量是用来做什么的? 你也许会为块注释的不能嵌套而不爽,那么你可以用预编译来完成这个功能。使用“#if0”和“#endif”括起来的代码,将不被编译,而且还可以嵌套。 4、函数的[in][out]参数 写有参数的函数时,首要工作,就是要对传进来的所有参数进行合法性检查。而对于传出的参数也应该进行检查,这个动作当然应该在函数的外部,也就是说,调用完一个函数后,应该对其传出的值进行检查。 5、对系统调用的返回进行判断 6、if 语句对出错的处理 if ( ch = 0 ch = 9 ){ ????????/* 正常处理代码 */ ????}else{ ????????/* 输出错误信息 */ ????????printf(error ......\n); ????????return ( FALSE ); ????} ?? 这种结构很不好,特别是如果“正常处理代码”很长时,对于这种情况最好不要用else 。先判断错误,如: ?? ????if ( ch 0 || ch 9 ){ ????????/* 输出错误信息 */ ????????printf(error ......\n); ????????return ( FALSE ); ????} ? ????/* 正常处理代码 */ ????...... ? ?? 这样的结构,不是很清楚吗?突出了错误的条件,让别人在使用你的函数的时候,第一眼就能看到不合法的条件,于是就会更下意识的避免。 7、头文件中的#ifndef 千万不要忽略了头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 ? 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: ????#ifndef??标识 ????#define 标识 ????...... ????#endif ?? 标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h ????#ifndef _STDIO_H_ ????#define _STDIO_H_ ????...... ????#endif 8、在堆上分配内存 可能许多人对内存分配上的“栈 stack”和“堆 heap”还不是很明白。包括一些科班出身的人也不明白这两个概念。我不想过多的说这两个东西。简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里。stack一般是静态分配内存,heap上一般是动态分配内存。 ?? 由malloc系统函数分配的内存就是从堆上分配内存。从堆上分配的内存一定要自己释放。用free释放,不然就是术语——“内存泄露”(或是“内存漏洞”)—— Memory Leak。 于是,系统的可分配内存会随malloc越来越少,直到系统崩溃。还是来看看“栈内存”和 “堆内存”的差别吧。 ????栈内存分配 ????————— ????char* ????AllocStrFromStack() ????{ ???

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档