阅读了代码大全2的部分内容,做出如下总结
把不太理解的东西和一些较为理解的且十分类似的东西做比较,对这个不太了解的东西产生更深刻的理解叫做建模。
模型不可能一下子就覆盖的很全面,会经过一系列的转变,往更好更全面的模型发展。
简单的模型有简单的用处,模型的选择与设计需根据实际情况来。
增量的、迭代的、自适应的、演进的软件设计概念。
精心计划,并非意味着事无巨细的计划或过渡的计划,程序设计也是如此。
隐喻是一种启发方式,并不是算法。
迭代技术不能完全消除前期准备不足的负面影响。
需求变更的主要来源是客户参与项目的时间越长,对项目的理解深入,更加了解自己的需求。
架构的组成,类的设计、数据设计、业务规则、用户界面设计、资源管理、安全性、性能、可伸缩性、互用性、输入输出、错误处理、容错性等,红色为嵌入式系统比较中要的分。
深入一种语言去编程,不要仅 在一种语言上编程
软件的首要技术使命:管理复杂度
遇到设计不佳的旧代码,应该为新的系统编写一个与旧代码的交互层,层次化设计 有利于把低劣代码禁闭起来。
形成一致的抽象,抽象能使你忽略无关的细节。
合作设计,三个臭皮匠顶的上一个诸葛亮,含义是设计的过程中 可以将自己的设计方案与同事讨论一番,询问同事的一些想法,讨论一些设计方案。
类的接口应该展现一致的抽象层次
编写子程序的理由: 降低复杂度,易懂的抽象,避免代码重复,隐藏指针操作,提高可移植性,简化复杂逻辑,隐藏实现细节,形成中央控制点。
内聚性,指子程序中的操作紧密程度,
把每个知识点都变成1+1
避免在构造函数和析构函数中抛出异常,可能造成内存泄漏。
忽略异常并不是不做异常log,而是异常层次较低,对系统几乎无影响。
把伪代码变成高层次的注释
声明变量的时候进行初始化,尽可能的缩短变量的存活时间,缩小变量的作用域。
避免浮点数进行数值判断
不要随机的访问数组,应当顺序的访问数组,随机的访问数组类似goto语句。
结构化的数据可提升程序的维护性
指针是现代编程中最容易出错的领域之一,但是理解指针有助于理解内存管理机制。
避免指针错误,方法:把指针操作限制到子程序中,使用指针之前进行检查
尽可能的少用全局数据,通过访问子程序来取代全局数据。
使用if else if 将最常见的情况放到最前面有利于提高代码效率,switch case 同理
在for循环里面,循环的标志位不要再循环体内修改。且跳出循环体后,不要用循环的标志位。
循环体的边界应当使用整数或枚举类型
循环长度与多层嵌套会增加理解复杂度。
return 的目的增强子程序的可读性。
递归并不常用,如果使用,必须慎重。递归的使用需考虑递归能够正常停止,系统的堆栈够用,处理的事情要足够的简单便于理解。
c语言中,把常量放在比较的左端,编译器能够检查出错误的使用=符号
代码质量特性:正确性,可用性,效率,可靠性,完整性,适应性,精准性,健壮性。可维护性,灵活性,可移植性,可重用性,可读性,可测试性,可理解性。相互联系。
多种缺陷检测方法结合,更有利于检测出缺陷。
检测发现的缺陷成本远低于测试发现的缺陷成本,
协同构建能够有效的改善软件质量
尝试用多种方法重现错误以准确判断错误原因
抛开问题休息一下
开发阶段的重构是提升程序质量的最佳时机。
增量集成有助于项目增长
注释写的糟糕很容易,写的出色很难,注释写的不好只会帮倒忙?
注释的种类,重复代码,解释代码,代码标记,概述代码,代码意图说明,
注释代码应该注重 为何做而不是怎么做
有的注释风格需要许多重复性劳动,应当舍弃,改用易于维护的注释风格。
标签:读书笔记,十月,代码,注释,理解,设计,子程序,指针 From: https://www.cnblogs.com/yang-----/p/17915128.html