《高质量程序设计指南》读书笔记

书名 :高质量程序设计指南C++/C语言(第3版)


基本信息 BASICS

  1. 作者:林锐、韩永泉
  2. 出版社:电子工业出版社
  3. 出版时间:2007年


阅读心得 LEARNINGS

  1. 编程需要遵循一定的规范,才能体现程序员的职业素养;
  2. 在阅读本书前,对C++的编程知之甚少,也是抱着“编程不过是利用MATLAB或者Python实现想法”的心态来阅读本书,但是一路读下来,反而被C/C++一板一眼的编程规范所感动。如果把实现功能看成是横练的外功,编程质量看做修炼的内功,大概学武一样,编程也要内外兼修才能成为一代武学大家吧。
  3. 读完作者的《大学十年》很有感触,和作者“兴风作浪”的大学时光相比,我的七年的大学生活就显得尤为的枯燥与苦闷。我努力地在那些既定的学业目标里面挣扎着毕了业,再回头一看,原来除了以纸文凭以及半吊子的专业知识,就什么也没有留下。究其原因,大概是没有在大学阶段找到自己愿意为之奋斗的目标,做起事也就少了许多动力与激情,只剩下一味地迷惘与彷徨。好在毕业以后,似乎慢慢地找到了些许人生的方向,希望自己阅读和笔记的习惯能坚持下去,努力地吸收养分,最后长成自己的参天大树。


重点摘录 NOTES

  1. 主动去创造环境,否则你无法设计人生
  2. 生活和工作要充满激情,否则你无法体会到淋漓尽致的欢乐与痛苦。
  3. 越是怕指针,就越要使用指针不会正确使用指针,就算不上是合格的程序员;
  4. 必须养成“使用调试器逐步跟踪程序”的习惯,只有这样才能发现问题的根源。


第一章:高质量的软件开发之道

软件的质量属性:正确性、健壮性(容错能力和自我恢复能力)、可靠性(不出现故障的概率)、性能(程序时空效率)、易用性、清晰性(易理解)、安全性、可扩展性、兼容性(与其他软件交互的能力)、可移植性

CMM模型:评判软件过程能力。

SPP模型:软件开发的精简并行过程。


第二章:编程语言的发展简史

1972年,贝尔实验室发明C语言

80年代。发明C++

1995年,发明JAVA

能解决应用问题的编程语言就是好语言,要根据开发产品的特征,选择业界推荐并且自己推荐的编程语言来开发软件。


第三章:程序的基本概念

语言实现:编译器、连接器或者解释器的实现

初级编程方法:结构化编程、模块化编程、过程式编程

高级编程模式:基于对象、面向对象、面向组件、泛型编程、事件驱动编程

程序库:C runtime library、STL、MFC、VCL等。

集成开发环境(IDE):编辑器、编译器、连接器及调试器的集成。

程序的工作原理:存储程序控制原理

clipboard


第四章:C++/C程序设计入门

main()函数,程序的默认主函数,返回值为0,代表正常结束。

命令行参数:由启动参数截获并打包成字符串数组后传递给main()的一个形参argv。

全局变量存放在程序的静态数据区,在main()之前创建,在main()之后销毁,此时编译器会自动初始化为0。

局部变量是运行时在栈上创建的,动态内存在堆上分配所以需要程序员来初始化.

C运行库:启动函数、I/O函数、存储管理、动态链接库。

注意编译和运行的区别:容器越界访问、虚函数动态决议、动态内存分配、异常处理均在运行时才能发挥作用。

标准C语言没有bool类型,但是某些实现通过库提供了其映射。

typedef int BOOL;

#define TRUE 1

#define FALSE 0

big endian: 高字节、高字在前,或者地址大的字节结尾

自然对齐:基本数据类型的变量地址应该能被他们的大小整除,eg.int类型的变量应该能被4整除(32位系统下)

强制类型转换是显式的,隐式转换由编译器自动完成,需要格外注意。

运算符和结合律:

clipboard

为了防止歧义和提高可读性,建议用括号确定表达式的顺序

clipboard

clipboard

对于不同的C++语言,布尔变量FALSE的值是确定为0的,但是TRUE的值可以为1或者-1。

正确的浮点变量比较方式

clipboard

正确的指针变量与零值比较:

if(p==NULL) //P与NULL显式的比较,强调p是指针变量

而为了防止歧义和提高可读性,建议用括号确定表达式的顺序

程序中可能遇到if/else/return的组合,应该使用 return condition ? x : y;


猜你喜欢

转载自www.cnblogs.com/Superorange/p/12383303.html