读书笔记 --《程序员修炼之道》
总的收获
本书提出很多工作建议,有编码层面,项目进度层面,效率层面。给了工作中的很多建议。
印象深刻的有以下几点:
- 不要重复你自己
- 曳光弹
- 单元测试
- 持续集成,持续部署
- 估算项目时间
6.破窗理论
7.重构
8.自动化
以下是总结:
这本书,主要告诉程序员(开发, 测试,运维)一些工作中的方法论,和一些工作习惯。能够使你的工作更加高效和挖坑更少。
注重实效的哲学
注重实效的程序员在工作会做到: 负责,不仅仅是按时完成工作,更多的是,当出现问题的时候,不是去找接口,推卸责任,而是承担起来,给出解决方案。勇敢的承认我们的无知。提供各种选择,不找蹩脚的借口。
不要留破窗户, 当你看到问题的时候,尽快修复他。否则,最后问题将变的更加严重,直到你再也不想看代码,不敢改动任何一处。(破窗户:低劣的设计,错误的决策,糟糕的代码)。
做变化的催化剂 ,如果没有人作出改变,那就从你开始,影响每一个人。
足够好的软件, 不要等到你编写出完美的软件再交付给你用户使用,小步迭代,持续交付,尽早让你的用户看到软件,能够让你及早的发现问题,及时调整。
更新你的知识资产,要定期阅读来学习新的知识,多元化,可以让你的视野开阔。
批判的思考,批判的分析你读到的和听到的,否则很难将你学到的转换成你自己的知识,最后你只是一个图书馆。
交流,倾听别人和让对方倾听你,清楚你要告诉倾听者什么,你是否表达清楚,回复他人,确保对方确定你已经收到了他告知你的信息。
注重实效的途径
DRY原则 不要重复自己 ,我们经常会做很多重复的工作,而是意识到解决一下这些重复,或者进行抽象,或者进行自动化,我们应该做更加脑力的事情,而不是体力活。
-
强加的重复
-
无意的重复
-
无耐心的重复
-
开发者之间的重复
正交性 两个或者多个事务其中一个发生变化,不会影响其他的,正交性系统模块之间的耦合很低。
正交性的好处
-
提高生产率
-
降低风险
-
利于测试(特别是单元测试)
编码使用正交性的技巧
-
让你的代码保持解耦
-
避免使用全局数据
-
避免编写相似的函数
曳光弹 使用简单的功能,方法检验方案是否可行,小步快跑,快速迭代,让客户能尽快的看见的看见东西,以便及时进行调整,保证项目能够成功。
估算 避免发生意外
基本工具
-
使用脚本高效工作
-
源码控制
-
构建 自动和可重复的源码构建
-
调试你的代码 调试的形式不仅仅是使用IDE的调试工具,也可以使用断言,输出查看,毕竟多线程下,很难进行调试。
-
代码生成器
注重实效的偏执
你不可能写出写出完美的软件,不可能不犯错误,所以注重实效的程序员,会对自己的错误进行防卫性编码。
-
按合约设计 合约即规定你的权利与责任,也规定对方的权利与责任。
-
死程序不说谎 代码是最老实的家伙,一旦出异常和错误,就要测试,修改代码。
-
断言式编程 如果它不可能发生,用断言确保它不会发生。
-
配平资源 要有始有终,打开的资源,记得关闭。
弯曲或折断
-
使代码不会僵化,我们需要解耦各个模块。
-
解耦与得墨忒耳法则 得墨忒耳法则:只和你的‘密友‘交谈
当你编码时
-
不要靠巧合编程,要深思熟虑的编程
-
算法的时间空间复杂度
-
重构 使快要或已经僵化的代码,重新焕发活力
-
易于测试的代码 编写单元测试
当项目开始之前
-
挖掘真实需求
-
建立需求文档
-
使统一的沟通词汇
-
充分准备 倾听反复出现的疑虑,等你准备好再开始。
注重实效的项目
-
不要留破窗户
-
做催化剂
-
交流沟通
-
不要重复你自己
-
正交性
-
自动化
一切都要自动化
-
无情的测试
-
在你的代码上签名