编写可读代码的艺术chapter 10-13
2016-01-28 23:01
260 查看
重新组织代码
1. 抽取不相关的子问题
看看某个代码块,该段代码的高层次目标是什么?对于每行代码,它是直接为了目标而工作的吗?
如果足够的行数是在解决不相关的子问题,抽取代码到独立的函数中
什么样的代码段应该独立出来 ?
纯工具代码,字符串操作,文件读写等等
其他多用途代码,额外的好处是更好进行单元测试
创建大量通用的代码,完全的从项目中解耦出来
简化已有的接口
按照新的需求重塑接口
2. 一次只做一件事
同时在做几件事的代码难以理解,一个代码块可能初始化对象,清除数据,解析输入,然后物理逻辑,所有都在一起进行,纠缠在一起,非常难以理解。一次只做一件事的流程:
列出代码所做的所有任务,这里的任务没有严格的定义,可以小到确保这个对象有效
尽量把这件任务拆分到不同的函数中去,或者是代码中的不同段落中
2. 把想法变成代码流程
像对着一个同事一样用自然语言描述代码要做什么注意描述中所用的关键字和短语
写出与描述所匹配的代码
3. 少写代码
最好读的代码是没有代码别费神实现自己觉得后面会用到的功能
熟悉周边的库
保持自己的代码库越小,越轻量级越好
创建越多越好的工具来减少重复代码
减少无用代码或没有用的功能
让你的项目保持分开的子项目状态
小心代码重复
相关文章推荐
- 再谈QVector与QByteArray——Qt的写时复制(copy on write)技术
- USACO Your Ride Is Here 解题日志
- Python--多线程
- java基础【多线程】
- [LeetCode] 315
- 1.28 Java基础总结 ①方法重载②构造方法
- struts2之OGNL表达式
- 1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用
- yii 字段验证的使用
- 一些高尔夫模拟器的比较:TruGolf、Foresight GC2、Visual Sports
- php获取文件名后缀的方法
- Java Vector 介绍
- 在Eclipse中用Maven创建Servlet实现输出Hello World
- 之后要接触更多代码管理的知识——2015踩坑有感
- 编写可读代码的艺术chapter 7-8
- struts2带参数的结果集
- php环境配置
- 一段有趣的代码
- struts2动态结果
- Java - 集合基础