Statement: 是按照书中的顺序,但是其中的某些点由于关联度很大会放在一起。另外,这里只是书中各个点的个人整理以及无知浅薄的概括,还是推荐看书/原版书。
只看了部分,后面的失去了兴趣,先搁置,看过的内容如下!
1. 人生是你的
拥抱变化,尝试改变,掌控机遇。
2. 源码被猫吃了
不害怕问题,问题就是用来解决的,积极“背锅”,让团队信任你,提供选择,不找借口。
3. “破窗”
不要放任“破窗”,Bug具有最高优先级,注意修复时的附带损伤。
4. 石头做的汤和煮熟的青蛙
成为推动变革的催化剂,保持全局观。
5. 够好即可的软件
在适当的时候停下优化的脚步。
6. 知识组合
定期投资,多样化,尝试借鉴经验,不要让问题沉寂,把找到答案作为个人挑战。
7. 交流
注意听众,注意时机,注意倾听。
8&9. ETC & DRY 思维
Easier To Change and Don't Repeat Youself.
更为普遍的理论是:高内聚松耦合,尽量做到“最小模块,单一职责”。
10. 正交性
独立性和解耦性,努力的降低模块间的关联,消除修改所带来的影响。
好处:最小修改,隔离病变,减小风险,利于测试,提高生产力
11. 可逆性
关键的技术选型和决定通常不可逆转,那么只能让架构更加的灵活、适应变化。上层逻辑的抽象,模块的切分细化,让API、库、模块易于修改和替换。
12. 曳光弹
最小框架demo。在项目初期,努力的探索打通整个系统,用最简的代码,实现最基本的框架性需求,后来的工作是仿照和使用框架填充整个所需要的系统。而原型则是不断被抛弃的实现“曳光弹”的前期探索和实践。
13. 原型
这里的原型就是“快速原型法”中的原型,适用于预研过程中的快速迭代,遵循“用完就扔”的原则。
15. 关于估算
不要凭空安排进度,要持续写代码,通过代码的推进对进度表进行迭代。必要时,请教老司机以获取经验。
17. Shell游戏
加强编辑能力, 学习更加高效的命令,发掘有用的特性,内化成为肌肉记忆。
19. 版本控制
共享目录并非版本控制,永远使用版本控制,不论工作大小和持续时间长短,养成习惯。
20. 调试
不要恐慌,发掘问题的根本原因,不止于表面,可复现,二分法,输出日志和跟踪信息。
22. 工程日记
经常性的记录自己的想法,经常性的进行工作总结,比记忆更加可靠。
23.契约式编程
契约式编程(编码之前,明确输入域边界条件,完成的功能和承诺的交付),尽早奔溃。
25. 断言式编程
在生产环境中没有什么不可能,防弹级软件(^_^)
26. 保持资源的平衡
有始有终(一般来说,分配即代表对释放负有责任)...
27. 不要超出前灯范围
小步前进(采取深思熟虑的小步骤,同时检查反馈,在推进中不断调整),不要占卜(习以为常的事情变化的可能性很大)
38. 巧合式编程
不要巧合式编程,应该深思熟虑, 和结果相近是不够的!
38. ->如何深思熟虑的编程:
- 时刻注意你在做什么
- 能够向一个新手讲清楚这段代码吗?
- 按计划推进
- 只依赖可靠的东西
- 将假设文档化
- 不要只测试代码,还要测试假设
- 给精力的投放排个优先级
- 准备好重构
40. 重构
代码不是静态的东西,何时进行重构?当你学到一些东西而且对于已经实现的部分更加了解且不太满意时,不要犹豫,改掉它!
- 低风险,小步骤,随时测试
- 外部行为不变,并不是添加新功能