程序员修炼之道阅读笔记1

第一章 注重实效的哲学

1 我的源码让猫给吃了

 

提供各种选择,不要寻找借口。

 

2 软件的熵

一句话:不以善小而不为,勿以恶小而为之.

破窗户理论:一扇破窗户给人废弃感,慢慢人们也开始不关心周围的居住环境,开始乱丢垃圾,乱抹乱画,整个社区就废弃了。

 

3 石头汤与煮青蛙

先出一个『石头』一样的版本,催化大家一起完善它。

不要做温水里的青蛙,随着开发的进行软件的熵可能越来越大,要留心大图景,及时做出反应。

 

4足够好的软件

不可能存在完美的软件,不要过分完美主义,从而去精雕细琢一些不是十分必要的细节。

其实这暗含了『敏捷开发』的核心思想,我们需要尽快的开发出『可用』的软件,交给市场来反馈,而不是想当然的开发我们认为的『完美』的软件。

 

5 你的知识资产

对程序员来说,知识就是所有的资产,要像管理资产那样来管理自己的知识。『定期投资』,坚持学习。『多元化』和『管理风险』,意味着不要把鸡蛋放在一个篮子里,不要只关注java的技术栈,多了解其他技术以免被淘汰。『低买高卖』,和股票一样,在技术比较低潮的时候开始学习,这样等技术流行的时候就可以步入行业顶尖,得到很大的回报。不过个人不是很认同这一点,目前新技术层出不穷,与其随时跟风学新技术,不如深入学习一些难啃的底层的东西,比如研究『算法』和读一些大部头的经典的书,选择性的学习潮流。『重新评估和平衡』,学而时习之,不亦乐乎。

 

6 交流

『交流』在各行各业都是十分重要的能力,尤其作为一个程序员,交流能力甚至重要过coding的能力。『知道你自己想说什么』,要逻辑清晰,表达在点。『了解你的听众』,不要一味的强灌你自己的观念,说服的前提是倾听。选择时机和风格,这个都是经验得来的。做美观的文档,让听众参与,习惯倾听,锻炼自己的邮件能力。

第二章 注重实效的途径

7 重复的危害

DRY: Don't repeat yourself.

这句话可以说是最最重要的代码原则。当你为了追求绩效而去单纯的拷贝某一段现有的代码,而不做任何逻辑抽离和修饰时,你就已经是个『失足』程序员了。

当你觉得复用变得困难时,再退一步审视一下自己的代码,肯定有重构的空间。

 

8 正交性

几何概念,互相垂直的两条线就是正交的。

反应在软件设计中意味着,当一个组件的修改完全不会牵动另外一个时,这两者即正交。

避免耦合,分层分模块,善用设计模式。让系统富有弹性,可以随需应变。

 

9 可撤销性

还是系统的可变性,是否可以快速应付其中一些改变而快速改变。一言以蔽之:面向接口编程。

 

10 曳光弹

当你狙击时,你需要曳光弹帮你定位目标。一言以蔽之:做大型项目时,先出一个简陋可运行可展示的版本。不要在黑夜中盲狙。

 

11 原型与便笺

作为曳光弹的替代,可以使用原型来架构。这方面实践不多。

 

12 领域语言

『语言的界限就是一个人世界的界限』维特根斯坦的这句名言就足够描述了。java程序员会习惯性的啰嗦,c++程序员可能是最严谨的。

 

13 估算

敏捷团队的程序员每时每刻都在估算,估算这个功能需要多少个story point,估算这次重构需要多久。当你觉得难以估算工作量的时候,试着拆分。敏捷团队需要每个人每时每刻都知道自己和项目的进度,知道自己所处的位置。

posted @ 2021-10-30 23:48  禁小呆  阅读(41)  评论(0)    收藏  举报