代码整洁之道
The Clean Coder:A Code of Conduct for Professional Programmers
[美] Robert C. Martin
语句采撷
第1章专业主义
如果你希望自己的软件灵活可变,那就应该时常修改它。
“童子军训练守则”:对于每个模块,每检入一次代码,就要让它比上次检出时变得更为简洁。
如果你有一套覆盖了全部代码的自动化测试,如果那套测试可以随时快速执行,那么你根本不会害怕修改代码。怎么样才能证明你不怕修改代码呢?那就是,你一直在改。
第7章验收测试
写这么多测试,看起来的确是额外工作,可是,这根本不是额外工作。写这些测试是为了确定系统的各项指标符合要求,只有确定这些细节指标,我们这些程序员才能确知“完成”。
迭代开始的第一天,就应当准备好最初的几项验收测试。然后每天都应当完成一些验收测试,到迭代的中间点,所有的测试都应当准备完毕。
第9章时间管理
立会
敏捷开发的武器库中包含“立会”:在开会时,所有参与者都必须站着。到场的人一次回答以下三个问题:
- 我昨天干了什么?
- 我今天打算干什么?
- 我遇到了什么问题?
每个人回答不超过1分钟,即便是10个人的小组,开一次这种会议的时间也不会超过10分钟。
争论/反对
Kent Beck 曾告诉我一个深刻的道理:”凡是不能在5分钟内解决的争论,都不能靠辩论解决。”争论之所以要花费这么多时间,是因为各方都拿不出足够有力的证据。所以这类争论依据的不是事实,而是信念。
在没有数据的情况下,如果观点无法在短时间内达成一致,那么就永远无法一致。唯一的出路是,用数据说法。
注意力点数
编程是需要持续投入精力和注意力的智力活动。注意力是稀缺的资源,它类似魔力点数。
如果你用光了自己的注意力点数,必须花一个小时或更多的时间做不需要注意力的事情,来补充它。
番茄工作法
在25分钟的高效工作时间段里,你有底气拒绝任何干扰。
第11章压力
观察自己在危机时刻中的反应,就可以了解自己的信念。如果在危机中依然遵循着你守持的纪律,就说明你确实相信那些纪律。
- 如果在非危机时刻你会遵循TDD(测试驱动开发)的纪律,但是在危机时刻你放弃了这种做法,说明你并不真正相信TDD是有帮助的。
- 如果在平常时候你会注意保持代码整洁,但在危机时刻你却会产出混乱的代码,说明你并不真正相信混乱会导致速度下降。
- 如果在危机时刻你会结对工作,但平时却不结对,说明你相信结对工作更有效率。
选择那些你在危机时刻依然会遵循的纪律原则,并且在所有工作中都遵守这些纪律。遵守这些纪律原则是避免陷入危机的最好途径。
第12章协作
程序员与人
我们并非是因为喜欢和其他人在一起工作才选择做程序员的。我们都认为人际关系难以应付而且毫无规律。编程用的机器则整洁,行为也可遇见。如果可以一个人待在房间里说个小时沉浸在一些真正有趣的问题上,那将会是最开心的时光。