- 1、本文档共75页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何写好一个函数详解
函数的视觉效果 控制每个函数的代码在50行以内,以阅读时不需要滚屏为上限 即时重构,写完一个函数,如果发现代码行较多,立即将其拆成多个小函数 杜绝重复代码段,将重复代码段放入一个小函数 努力减少非顺序代码段,如果分支逻辑满天飞表明设计有问题 使用等宽字体,方便使用编辑器的高级块编辑功能,提高编码效率,减少出错机会,使得代码的版式在各种编辑器中保持一致 代码严格对齐,像诗歌一样漂亮,减轻视觉负担 BITMAPINFOhdr hdr; hdr.biSize = sizeof(hdr); hdr.biWidth = 640; hdr.biHeight = 480; hdr.biPlanes = 1; hdr.biBitCount = 8; hdr.biCompression = BI_RGB; hdr.biSizeImage = 0; hdr.biXPelsPerMeter = 7874; hdr.biYPelsPerMeter = 7874; hdr.biClrUsed = 256; hdr.biClrImportant = 0; hdr.biSize = sizeof(hdr); hdr.biWidth = 640; hdr.biHeight = 480; hdr.biPlanes = 1; hdr.biBitCount = 8; hdr.biCompression = BI_RGB; hdr.biSizeImage = 0; hdr.biXPelsPerMeter = 7874; hdr.biYPelsPerMeter = 7874; hdr.biClrUsed = 256; hdr.biClrImportant = 0; 程序员写代码的过程也是考问自己良心的过程,如果对自己写的每一行代码都能心安理得,那么代码质量就有了保证; 总结 优秀的程序员,不仅要有聪明的头脑,更要有具有严谨、细致、不怕麻烦、追求完美的专业态度; 设计鉴赏 * 考虑跨平台的要求 //file: data_type.h #ifndef __DATA_TYPE_H__ #define __DATA_TYPE_H__ typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned long uint32; typedef unsigned long long uint64; #endif 考虑空间和时间性能,堆栈内少用大数组和大尺寸对象 void DoMathAlgorithm(int* numbers) { int buf[1024]; ... DoMathAlgorithm(buf) ... } 严格初始化每一个变量,时刻警惕内存溢出和内存泄露 void func() { int* p_buf; ... if (some condition) { p_buf = new int[BUF_SIZE]; } ... if (0 != p_buf) { delete[] p_buf; } } 精确把握变量在进程中的地址空间和它们的生命周期 堆栈(自动)变量:开始于”{”, 终止于”}” 静态变量:程序链接过程中其逻辑地址就确定下来了 堆(内存池)变量:开始于new, 终止于delete 顺序结构--运行时无时序要求 运行时无时序要求不意味可以任意摆放代码行,应该力求按照统一的规则安排代码行的顺序,使得代码容易维护 变量的初始化 变量的更新 变量的声明 这三块代码严格遵循了一致的顺序,使得代码容易阅读容易维护,减少了笔误的可能,即使发生了笔误查找起来也容易! 组织代码使它们的依赖关系明显 子程序的名字应当清楚的表明依赖关系 顺序结构--运行时有时序要求 使用子程序参数使依赖关系明显 注明不明确的依赖关系 if-else分支结构 把正常的情况放在if后面而不是else后面,条件语句要少用非逻辑 if (!condition) { //do job A } else { //do job B } if (condition) { //do job B } else { //do job A } 多层if/else嵌套目标要明确,尽快的到达最内层的目标逻辑 if (condition1) { if (condition2)
文档评论(0)