《程序员修炼之道Ⅱ》读书简记

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. ->如何深思熟虑的编程:

  1. 时刻注意你在做什么
  2. 能够向一个新手讲清楚这段代码吗?
  3. 按计划推进
  4. 只依赖可靠的东西
  5. 将假设文档化
  6. 不要只测试代码,还要测试假设
  7. 给精力的投放排个优先级
  8. 准备好重构

40. 重构

代码不是静态的东西,何时进行重构?当你学到一些东西而且对于已经实现的部分更加了解且不太满意时,不要犹豫,改掉它!

  1. 低风险,小步骤,随时测试
  2. 外部行为不变,并不是添加新功能
原文地址:https://www.cnblogs.com/yocichen/p/14624128.html