您的位置:首页 > 编程语言

《代码大全2》读书笔记

2015-11-17 10:59 260 查看

《代码大全2》读书笔记

第六章 可以工作的类

抽象数据类型ADT :一组数据 和 对其的操作

类可以看成是 ADT + 继承 +多态

良好的类接口,类接口可以看成类共有子程序所构成的集合

类接口应该表现一致的抽象层次。

尽可能让接口可编程,而不是表达语义。将接口中逻辑部分转换为编辑器能实施的部分,如使用assert等。

一般来说应该尽量减少类和类之间相互合作的范围

减少实例化对象的数量

减少实例对象调用不同子程序的数量

高质量的子程序

变量名最好在9~15个字母之间

子程序名(方法名)则视命名是否清晰易懂而定

子程序的行数不要超过200行(不算注释与空行),否则可读性会下降

不要把子程序的参数用与计算处理,要用局部变量在子程序内处理

为子程序传递参数是多个变量还是一个对象,应该根据子程序参数的抽象层次上考虑。

防御式编程

子程序应该不应传入错误数据而被破坏

来写自己的断言,(在生产阶段关闭断言)

用断言来处理绝不应该发生的情况,而用错误处理代码来处理预期可能发生的状况。

隔离程序使其包容由错误产生的损害,让软件的某些部分处理“不干净的数据”,而让另一部分处理“干净的数据”,比如类的公用方法可以处理不干净的数据,而在调用私有方法时则认为数据都是干净的。在得到外部数据时可以得到清理,有时候多层清理也是应当的。

伪代码的编码过程

不要涉及编程语言,从子程序的意图上去写伪代码,伪代码可以在之后变成子程序的注释

子程序的高层设计至少要说明:

子程序要隐藏的信息

各项输入信息

输出信息

调用子程序的前条件

子程序在回调之前要确保后条件成立

使用变量的一般事项

在靠近变量第一次使用的地方初始化它(代码不会看起来很乱吗?)

在可能的情况下使用final

在类的构造函数中初始化数据成员(对应的是在析构函数中释放内存,如果在gc机制的语言中,这点还必要吗?)

尽量减少变量的作用域和生存时间增加代码的可读性,虽然写的时候可能麻烦一点)

为变量指定单一用途(接口中的方法也一样)(增加代码的可读性,写的时候可能麻烦一点)

变量名的力量

对变量的描述就是最佳的变量名

为循环下标命名(而不是简单的使用 i j k)

标记全局变量(加上g_)()

组织直线型代码

尽力写没有顺序依赖的代码;如果必须有,用子程序名来表明顺序依赖关系,或者在注释中注明。

使用条件语句

首先处理正常情况,并将正常情况放在if处 而不是else处。

重构

重构的理由

代码重复

冗长的子程序

循环过长或者嵌套过深

类的借口未能提供层次一致抽象

拥有太多的参数列表

重构策略

在增加子程序的时候重构

在添加类的时候重构

在修补缺陷的时候重构

关注易于出错的模块

重构的含义在于不影响程序行为的前提上改进可运行的代码

代码调整方法

在知道结果时停止判断

按照出现的频率来调整判断顺序

在循环中,如果循环是一个查找循环,可以使用哨兵值来减少每次循环所需要的判断时间

将所需要查找的值放在数组的末尾,这样可以保证循环一定会停止,也可以减少每次循环判断 i < array,count的判断时间。

多层循环时,将循环次数多的放在循环的外围。

个人性格

力图理解编译器的错误

彻底理解自己的程序而不是看看程序员是否能运行

有时候一个程序太大,过一段时间真的理解不过来啊。。

在开发过程中建立自我意识,如果分配给你的净是些不能提升自己能力的短期工作,你理应表示不满。

感觉一般,感觉这本书主要讲的还是提升代码的可阅读性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: