《编写高质量代码 改善C程序代码的125个建议》读书笔记思维导图_第1页
《编写高质量代码 改善C程序代码的125个建议》读书笔记思维导图_第2页
《编写高质量代码 改善C程序代码的125个建议》读书笔记思维导图_第3页
《编写高质量代码 改善C程序代码的125个建议》读书笔记思维导图_第4页
《编写高质量代码 改善C程序代码的125个建议》读书笔记思维导图_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

思维导图PPT模板《编写高质量代码改善C程序代码的125个建议》最新版读书笔记,下载可以直接修改建议函数类型变量指针语句参数第章使用检查运算程序区别结构体表达式文件代码声明不会本书关键字分析思维导图01第1章数据,程序设计之根本第3章程序控制语句应该保持简洁高效第5章不会使用指针的程序员是不合格的第2章保持严谨的程序设计,一切从表达式...第4章函数同样需要保持简洁高效第6章数组并非指针目录030502040607第7章结构、位域和枚举第9章文件系统第11章断言与异常处理第8章字符与字符串第10章预处理器第12章内存管理目录0901108010012013第13章信号处理第15章保持良好的设计第14章了解C11标准目录015014内容摘要本书适合那些有一定C语言基础并希望快速提升程序设计能力的初级与中级程序员。因此,本书并不会阐述C语言中的一些基础概念,而是将C语言编程过程中可能遇到的疑问或者障碍进行一一列举与剖析,并给出了经验性解决方案与建议。第1章数据,程序设计之根本但是,它也是广大程序员认为较难的一门语言,大多数人都停留在“入门”阶段。建议1:认识ANSIC建议2:防止整数类型产生回绕与溢出建议3:尽量少使用浮点类型建议4:数据类型转换必须做范围检查建议5:使用有严格定义的数据类型建议6:使用typedef来定义类型的新...010302040506第1章数据,程序设计之根本建议7:变量声明应该力求简洁建议8:正确地选择变量的存储类型建议9:尽量不要在可重入函数中使用静态(...建议10:尽量少使用全局变量建议11:尽量使用const声明值不会改...12345第1章数据,程序设计之根本建议2-1:char类型变量的值应该限制...建议2-2:使用显式声明为signed...建议2-3:使用rsize_t或size...建议2-4:禁止把size_t类型和它所...建议2:防止整数类型产生回绕与溢出建议2-5:小心使用无符号类型带来的陷阱建议2-7:防止有符号整数溢出建议2-6:防止无符号整数回绕建议2:防止整数类型产生回绕与溢出建议3-1:了解IEEE754浮点数建议3-2:避免使用浮点数进行精确计算建议3-3:使用分数来精确表达浮点数建议3-4:避免直接在浮点数中使用“==...建议3-5:避免使用浮点数作为循环计数器建议3-6:尽量将浮点运算中的整数转换为...010302040506建议3:尽量少使用浮点类型建议4-2:浮点数转换为新类型时必须做范...建议4-1:整数转换为新类型时必须做范围...建议4:数据类型转换必须做范围检查建议6-1:掌握typedef的4种应用...建议6-3:typedef不同于#def...建议6-2:小心使用typedef带来的...建议6:使用typedef来定义类型的新...建议7-2:避免在嵌套的代码块之间使用相...建议7-1:尽量不要在一个声明中声明超过...建议7:变量声明应该力求简洁建议8-1:定义局部变量时应该省略aut...建议8-2:慎用extern声明外部变量建议8-3:不要混淆static变量的作...建议8-4:尽量少使用register变...建议8:正确地选择变量的存储类型第2章保持严谨的程序设计,一切从表达式...总结的很好,有几个知识点还是get到了,比如编译时静态检查,在C11中得到了支持,而在这之前,使用的特殊的宏定义实现的。建议12:尽量减少使用除法运算与求模运算建议13:保证除法和求模运算不会导致除零...建议14:适当地使用位操作来提高计算效率建议15:避免操作符混淆建议16:表达式的设计应该兼顾效率与可读...12345第2章保持严谨的程序设计,一切从表达式...建议12-1:用倒数相乘来实现除法运算建议12-2:使用牛顿迭代法求除数的倒数建议12-3:用减法运算来实现整数除法运...建议12-4:用移位运算实现乘除法运算建议12-5:尽量将浮点除法转化为相应的...12345建议12:尽量减少使用除法运算与求模运算建议14-1:尽量避免对未知的有符号数执...建议14-2:在右移中合理地选择0或符号...建议14-3:移位的数量必须大于等于0且...建议14-4:尽量避免在同一个数据上执行...建议14:适当地使用位操作来提高计算效率建议15-1:避免“=”与“==”混淆建议15-3:避免“&”与“&&”混淆建议15-2:避免“|”与“||”混淆建议15:避免操作符混淆建议16-1:尽量使用复合赋值运算符建议16-3:尽量避免在表达式中使用默认...建议16-2:尽量避免编写多用途的、太复...建议16:表达式的设计应该兼顾效率与可读...第3章程序控制语句应该保持简洁高效对于书中检查数据类型的范围感觉很少回用到,自己也从来没用过,也没见过别人去检查的。建议17:if语句应该尽量保持简洁,减少...建议18:谨慎0值比较建议19:避免使用嵌套的“?:”建议20:正确使用for循环建议21:适当地使用并行代码来优化for...建议22:谨慎使用do/while与wh...010302040506第3章程序控制语句应该保持简洁高效建议23:正确地使用switch语句建议24:选择合理的case语句排序方法建议25:尽量避免使用goto语句建议26:区别continue与brea...第3章程序控制语句应该保持简洁高效建议17-1:先处理正常情况,再处理异常...建议17-2:避免“悬挂”的else建议17-3:避免在if/else语句后...建议17-4:对深层嵌套的if语句进行重...建议17:if语句应该尽量保持简洁,减少...建议18-1:避免布尔型与0或1进行比较建议18-2:整型变量应该直接与0进行比...建议18-3:避免浮点变量用“==”或“...建议18-4:指针变量应该用“==”或“...建议18:谨慎0值比较建议20-1:尽量使循环控制变量的取值采...建议20-2:尽量使循环体内工作量达到最...建议20-3:避免在循环体内修改循环变量建议20-4:尽量使逻辑判断语句置于循环...建议20-5:尽量将多重循环中最长的循环...建议20-6:尽量将循环嵌套控制在3层以...010302040506建议20:正确使用for循环建议22-2:优先使用for循环替代do...建议22-1:无限循环优先选用for(;...建议22:谨慎使用do/while与wh...建议23-1:不要忘记在case语句的结...建议23-2:不要忘记在switch语句...建议23-3:不要为了使用case语句而...建议23-4:尽量将长的switch语句...建议23:正确地使用switch语句建议24-1:尽量按照字母或数字顺序来排...建议24-3:尽量根据发生频率来排列各条...建议24-2:尽量将情况正常的case语...建议24:选择合理的case语句排序方法第4章函数同样需要保持简洁高效毋庸置疑,它是二十几年来使用最为广泛、生命力最强的编程语言,它的设计思想也影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。建议27:理解函数声明建议28:理解函数原型建议29:尽量使函数的功能单一建议30:避免把没有关联的语句放在一个函...建议31:函数的抽象级别应该在同一层次建议32:尽可能为简单功能编写函数010302040506第4章函数同样需要保持简洁高效建议33:避免多段代码重复做同一件事情建议34:尽量避免编写不可重入函数建议35:尽量避免设计多参数函数建议36:没有返回值的函数应声明为voi...第4章函数同样需要保持简洁高效建议37:确保函数体的“入口”与“出口”...建议38:在调用函数时,必须对返回值进行...建议39:尽量减少函数本身或者函数间的递...建议40:尽量使用inline内联函数来...第4章函数同样需要保持简洁高效建议34-1:避免在函数中使用stati...建议34-2:避免函数返回指向静态数据的...建议34-3:避免调用任何不可重入函数建议34-4:对于全局变量,应通过互斥信...建议34-5:理解可重入函数与线程安全函...12345建议34:尽量避免编写不可重入函数建议35-1:没有参数的函数必须使用vo...建议35-2:尽量避免在非调度函数中使用...建议35-3:避免将函数的参数作为工作变...建议35-4:使用const防止指针类型...建议35:尽量避免设计多参数函数建议37-2:尽量在函数体出口处对ret...建议37-1:尽量在函数体入口处对参数做...建议37:确保函数体的“入口”与“出口”...第5章不会使用指针的程序员是不合格的除此之外,为了使读者能够尽量做到“知其所以然”,本书重点阐述了一些尖锐的问题,如IEEE754浮点数、指针与数组、越界与溢出等问题。建议41:理解指针变量的存储实质建议42:指针变量必须初始化建议43:区别“int*p=NULL”和...建议44:理解空(null)指针与NUL...建议45:谨慎使用void指针建议46:避免使用指针的长度确定它所指向...010302040506第5章不会使用指针的程序员是不合格的建议47:避免把指针转换为对齐要求更严格...建议48:避免将一种类型的操作符应用于另...建议49:谨慎指针与整数之间的转换建议50:区别“constint*p”...建议51:深入理解函数参数的传递方式12345第5章不会使用指针的程序员是不合格的建议44-1:区别空(null)指针与N...建议44-2:用NULL指针终止对递归数...建议44-3:用NULL指针作函数调用失...建议44-4:用NULL指针作警戒值建议44-5:避免对NULL指针进行解引...12345建议44:理解空(null)指针与NUL...建议45-2:如果函数的参数可以是任意类...建议45-1:避免对void指针进行算术...建议45:谨慎使用void指针建议51-1:理解函数参数的传递过程建议51-2:掌握函数的参数传递方式建议51-3:如果函数的参数是指针,避免...建议51-4:尽量避免使用可变参数建议51:深入理解函数参数的传递方式第6章数组并非指针□高效设计问题:表达式设计、算法设计与函数设计,内联函数与宏的取舍等。建议52:理解数组的存储实质建议53:避免数组越界建议54:数组并非指针建议55:理解数组与指针的可交换性建议56:禁止将一个指向非数组对象的指针...建议57:禁止对两个并不指向同一个数组的...010302040506第6章数组并非指针建议58:若结果值并不引用合法的数组元素...建议59:细说缓冲区溢出建议60:区别指针数组和数组指针建议61:深入理解数组参数第6章数组并非指针建议52-1:理解数组的存储布局建议52-3:理解数组名a作为右值和左值...建议52-2:理解&a[0]和&a的区别建议52:理解数组的存储实质建议53-1:尽量显式地指定数组的边界建议53-3:获取数组的长度时不要对指针...建议53-2:对数组做越界检查,确保索引...建议53:避免数组越界第7章结构、位域和枚举建议62:结构体的设计要遵循简单、单一原...建议63:合理利用结构体内存对齐原理来提...建议64:结构体的长度不一定等于各个成员...建议65:避免在结构体之间执行逐字节比较第7章结构、位域和枚举建议66:谨慎使用位域建议67:谨慎使用枚举建议68:禁止在位域成员上调用offse...建议69:深入理解结构体数组和结构体指针第7章结构、位域和枚举建议62-1:尽量使结构体的功能单一建议62-2:尽量减小结构体间关系的复杂...建议62-3:尽量使结构体中元素的个数适...建议62-4:合理划分与改进结构体以提高...建议62:结构体的设计要遵循简单、单一原...第8章字符与字符串建议70:不要忽视字符串的null(0...建议71:尽量使用const指针来引用字...建议72:区别strlen函数与size...建议73:在使用不受限制的字符串函数时,...建议74:谨慎strtok函数的不可重入...建议75:掌握字符串查找技术010302040506第8章字符与字符串建议70-1:正确认识字符数组和字符串建议70-3:谨慎字符数组的初始化建议70-2:字符数组必须能够同时容纳字...建议70:不要忽视字符串的null(0...建议73-1:避免字符串拷贝发生溢出建议73-2:区别串拷贝strcpy与内...建议73-3:避免strcpy与memc...建议73-4:区别字符串比较与内存比较建议73-5:避免strcat函数发生内...12345建议73:在使用不受限制的字符串函数时,...建议75-1:使用strchr与strr...建议75-2:使用strpbrk函数查找...建议75-3:使用strstr函数查找一...建议75-4:区别strspn与strc...建议75:掌握字符串查找技术第9章文件系统建议76:谨慎使用printf和scan...建议77:谨慎文件打开操作建议78:文件操作完成后必须关闭建议79:正确理解EOF宏建议80:尽量使用feof和ferror...建议81:尽量使用fgets替换gets...010302040506第9章文件系统建议82:尽量使用fputs替换puts...建议83:合理选择单个字符读写函数建议84:区别格式化读写函数建议85:尽量使用fread与fwrit...第9章文件系统建议86:尽量使用fseek替换rewi...建议87:尽量使用setvbuf替换se...建议88:谨慎remove函数删除已打开...建议89:谨慎rename函数重命名已经...第9章文件系统建议77-1:正确指定fopen的mod...建议77-2:必须检查fopen函数的返...建议77-3:尽量避免重复打开已经被打开...建议77-4:区别fopen与fopen...建议77-5:区别fopen与freop...12345建议77:谨慎文件打开操作建议84-1:区别printf/scan...建议84-3:区别vprintf/vsc...建议84-2:尽量使用snprintf替...建议84:区别格式化读写函数第10章预处理器建议90:谨慎宏定义建议91:合理地选择函数与宏建议92:尽量使用内联函数代替宏建议93:掌握预定义宏第10章预处理器建议94:谨慎使用“#include”建议96:尽量避免在一个函数块中单独使用...建议95:掌握条件编译指令第10章预处理器建议90-1:在使用宏定义表达式时必须使...建议90-3:避免使用宏创建一种“新语言...建议90-2:尽量消除宏的副作用建议90:谨慎宏定义建议94-2:必须保证头文件名称的唯一性建议94-1:区别“#include<f...建议94:谨慎使用“#include”建议95-1:使用“#ifndef/#d...建议95-3:妙用“defined”建议95-2:使用条件编译指令实现源代码...建议95:掌握条件编译指令第11章断言与异常处理建议97:谨慎使用断言建议98:谨慎使用errno建议99:谨慎使用函数的返回值来标志函数...建议100:尽量避免使用goto进行出错...建议101:尽量避免使用setjmp与l...12345第11章断言与异常处理建议97-1:尽量利用断言来提高代码的可...建议97-2:尽量在函数中使用断言来检查...建议97-3:避免在断言表达式中使用改变...建议97-4:避免使用断言去检查程序错误建议97:谨慎使用断言建议97-5:尽量在防错性程序设计中使用...建议97-7:谨慎使用断言对程序开发环境...建议97-6:用断言保证没有定义的特性或...建议97:谨慎使用断言建议98-1:调用errno之前必须先将...建议98-3:避免使用errno检查文件...建议98-2:避免重定义errno建议98:谨慎使用errno第12章内存管理建议102:浅谈程序的内存结构建议103:浅谈堆和栈建议104:避免错误分配内存建议105:确保安全释放内存第12章内存管理建议106:避免内存越界建议108:避免calloc参数相乘的值...建议107:避免内存泄漏第12章内存管理建议104-1:对内存分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论