《代码大全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的判断时间。
多层循环时,将循环次数多的放在循环的外围。
个人性格
力图理解编译器的错误彻底理解自己的程序而不是看看程序员是否能运行
有时候一个程序太大,过一段时间真的理解不过来啊。。
在开发过程中建立自我意识,如果分配给你的净是些不能提升自己能力的短期工作,你理应表示不满。
感觉一般,感觉这本书主要讲的还是提升代码的可阅读性。
相关文章推荐
- ubuntu14.04,安装、配置GO语言开发工具Eclipse!!
- 不同平台字节对齐
- ASP.NET连接数据库并获取数据方法总结
- Datables 服务端分页for DJango
- Ehcache 整合Spring 使用页面、对象缓存
- 【Java并发编程】并发编程大合集
- Spring - Bean的生命周期
- Qt中的事件
- ThinkPHP3.1.3的学习之路(1)
- java 关于setContentPane与getContentPane
- PHP里10个鲜为人知但却非常有用的函数
- Spring AOP依赖包
- 直接拿来用 九个超实用的PHP代码片段(二)
- C++内联函数一个重要的point
- delphi 创建DLL文件 及其调用和注意事项
- PHP 如何阻止用户上传成人照片或者裸照
- 【Java并发编程】之二十三:并发新特性—信号量Semaphore(含代码)
- JavaSE__原始的JDBC连接数据库,查询结果集 (基础篇)
- 谈谈个人对Spring的理解
- Java之控制反转和依赖注入