云享读书会----《程序员修炼之道》笔记2
软件编程基础工具
16 纯文本的威力
将知识用纯文本保存纯文本不会过时,它能够让你的工作事半功倍,并能简化调试和测试工作
17shell游戏
发挥shell命令的威力
当图形界面无法胜任时,使用shell
18加强编辑能力
游刃有余的使用编辑器
既然编辑器是至关重要的工具,不妨了解一下如何用它更快更准确的实现需求
19版本控制
永远使用版本控制
版本控制为你的工作创造了一个时间机器,可以用它重返过去
20 调试
去解决问题而不是责备
Bug到底来自你的失误还是别人的失误真的不重要他终究是你的问题需要你来修复
不要恐惧
不管是对银河系搭车客,还是对开发者来说都应这样
修代码前先让代码在测试中失败
在你修bug前,先创建一个聚焦于该bug的测试
读一下那些该死的出错信息
大多数异常都能告诉失败之物与失败之处。如果足够幸运你甚至能够得到具体的参数值
Select 没出问题
在操作系统或编译器中发现bug非常罕见,甚至在第三方产品或库中也是如此。Bug大多出现在应用程序中
不要假设要证明
在真实环境中证实你的假设—要依赖真实的数据集
务实的偏执
21 文本处理
学习一门文本处理语言
既然每天都要花大量的时间与文本打交道,何不让计算机帮你分担一二?
22工程日记
你无法写出完美的软件
软件不可能是完美的。对于在所难免的错误,要保护代码和用户免受其影响
23契约式设计
通过契约进行设计
代码是否不多不少刚好完成它宣称要做的事情,可以使用契约加以校验和文档化
24死掉的程序不会说谎
尽早崩溃
彻底死掉的程序通常比有缺陷的程序造成的损害要小
25断言是编程
使用断言去预防不可能的事情
如果一件事情不可能发生,那么就用断言来确保其的确不会发生,断言在校验你的假设,要使用断言在不确定的世界中将你的代码保护起来
26如何保持资源的平衡
有始有终
只要有可能,对资源进行分配的函数或对象就有责任去释放该资源提示
在局部行动
将易变的变量维持在一个范围内,打开资源的过程要短暂且明显可见
27不要冲出前灯范围
小步前进曲
由始至终
永远小步前进不断检查反馈,并且在推进前先做调整
避免占卜
只在你能看到的范围内做计划
28解耦
解耦代码让改变更容易
耦合使事物紧紧绑定在一起,以至于很难只改变其中之一
只管命令不要询问
不要从对象中取出值,在加以变换后再塞回去,让对象自己来完成这些工作
不要链式调用方法
当访问某事物时,使用的点号不要超过一个
避免全局数据
最好给每个方法增加一个额外的参数
如果全局唯一非常重要,那么将它包装到app中,但是,仅限于你真的非常希望它是全局的
29在现实世界中抛球杂耍
宁弯不曲
30变换式编程
编程讲的是代码,而程序谈的是数据
所有的程序都在变换数据—将输入转换为输出,开始用变换式方法来设计吧。
不要囤积状态,传递下去
不要把数据保持在函数或模块的内部,拿出来传递下去
31继承税
不要付继承税
考虑一下能更好满足需求的替代方案,比如接口、委托或mlxln
尽量用接口来表达多态
无需继承引入的耦合,接口或明确描述多态性
用委托提供服务,“有一个”胜过“是一个”
不要从服务中继承应该包含服务
利用mixin共享功能
Mixin不必承担继承税就可以给类添加功能而接口结合可以让多态不再令人痛苦
32配置
使用外部配置参数化应用程序
如果代码对一些在应用程序发布后还有可能改变的值有所依赖那么就应用外部维护这些值
- 点赞
- 收藏
- 关注作者
评论(0)