- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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() ????{ ???
您可能关注的文档
- ABU 自动缓冲 FFT 快速傅里叶变换.doc
- Acitive_Directory DNS 子域部署Exchange服务器完全攻略及故障剖析.doc
- Acronis Disk Director硬盘分区软件详细教程.doc
- Acronis True Image Echo Enterprise Server V9.5.8018安装.doc
- Active_Directory_灾难恢复.doc
- Acvdrwh开放专科计算机应用专业(软件方向)教学资料.doc
- Adaptec&lsi的raid卡设置界面.doc
- ADDA的FPGA控制.doc
- Admqedl证券期货经营机构信息系统备份能力标准.doc
- ADSL常见故障分类及其处理方法.doc
最近下载
- 高职入学考试英语复习指导丛书—语法专项训练教学课件(第四章数词).pptx VIP
- 2025年秋统编版语文三年级上册全册教学课件(课标版).pptx
- 2025年最新人教版小学二年级数学上册教学计划及进度表(新课标,新教材).docx
- 小区监控系统设计方案.pptx VIP
- 丹方模拟器1.32(新增龙宫草药)(1).xlsx VIP
- 等一朵花开读书分享PPT.pptx VIP
- 2012国际严重脓毒症和脓毒症休克治疗指南(SSC)..doc VIP
- 【免费】小学一年级数学“凑十法”练习题100道 .pdf VIP
- 幼儿园装修工程实施方案(模板范文).docx
- 高中物理必修二学历案.docx VIP
文档评论(0)