0、注明

本文内容摘选自《高效程序员的10个习惯(中文精选版)Practice agile developer-InfoQ》,文档内容稍加整理与总结而成。

1、作者

Venkat Subramania 等

2、节选

《高效程序员的45个习惯敏捷开发修炼之道》

敏捷开发修炼之道之高效程序员开发的10个习惯

3、软件开发之内功修炼口诀

迭代开发,价值优先;

分解任务,真实进度;

 

站立会议,交流畅通;

用户参与,调整方向;

 

结对编程,代码质量;

测试驱动,安全可靠;

 

持续集成,尽早反馈;

自动部署,一键安装;

 

定期回顾,持续改进;

不断学习,提高能力。

4、习惯1:对事不对人

4.1、对待一个人出现明显错误有哪些常见的反应

(1)否定个人能力;

===》坚决不可取,杀敌一千,自损八百

  1. 指出明显的缺点,并否定其观点;

===》观点虽正确,但表达不妥当;

  1. 询问你的同事,并提出你的顾虑

===》正确的表达方式

Q1:现实中你会选择哪一个?注意第一意识里的选择是什么。

INFO1:引导性地提出一个问题或疑问,从而让对方自己意识到问题的存在是一个不错的技巧。

INFO2:要专业而不是自我。

INFO3:把重点放在解决问题上,而不是极力证明谁的主意更好。

INFO4:团队中的每个人都有自由表达观点的权利(观点对与错不是重点,重点是表达观点)。

INFO5:你不需要很出色才能起步,但是你必须起步才能变得更出色。

INFO6:能容纳自己不能接受的想法,说明你足够有学识。----亚里士多德

4.2、一些有效的特殊“招式”

1、设定最终期限

没有最好的答案,只有更合适的答案。

2、逆向思维

判断一个方案的优缺点时少带一点个人情感。

3、设立仲裁人

会议开始时,选择一个仲裁人作为本次会议的决策者。

4、支持已经做出的决定

5、习惯2:跟踪变化

5.1、唯有变化是永恒的。

5.2、如何跟上技术变化的几个建议

1、迭代和增量式学习

每天学习一点新知识,时间不需要很长,贵在坚持。

2、了解最新行情

3、参加本地用户组活动

4、尽可能的参加研讨会议

5、如饥似渴的阅读

6、你不需要精通所有技术(也不太可能),但需要知道行业的动向,从而规划你的职业生涯。

 

6、习惯3:让设计指导而不是操纵开发

INFO1:好的设计应该是正确的,而不是精确的。它是目标,不是具体的处方。

INFO2:不要在前期做大量的设计。

INFO3:白板、草图、便利贴都是非常好的设计工具。复杂的建模工具只会分散你的精力,而不是启发你的工作。

 

7、习惯4:提早实现自动化部署

INFO 1:一开始就进行全面的部署,而不是等到项目的尾期。

INFO 2:系统的安装或部署应该简单、可靠及可重复。

INFO 3:在没有询问及征得用户同意前,安装程序绝对不能删除用户数据。

8、习惯5:度量真实进度

INFO 1:判断工作进度最好看实际花费的时间而不是估计的时间。

INFO2:诚实非常重要,隐瞒真相毫无意义。

INFO3:清楚项目的真实进度,是一项强大的技术。

INFO4:Scrum方法中的sprint

敏捷开发修炼之道之高效程序员开发的10个习惯

 

9、习惯6:用代码沟通

INFO 1:DRY原则,Don’t Repeater Yourself。

INFO 2:不要用注释包括你的代码。

Don’t comment to cover your code.

INFO 3:通过名称来进行魔法控制,是文学和神话中一种常用的主题,在软件开发中也是如此。

INFO 4:代码能够自解释而不用依赖注释是一件美好的事情。

INFO 5:解释代码做了什么的注释用处不大,相反,注释应该说明为什么这样写代码。

INFO 6:当重写方法时,保留描述原有方法意图和约束的注释。

10、习惯7:编写高内聚的代码

INFO 1:内聚性用来评估一个组件(包、模块或配件)中成员的功能相关性。内聚程度高,

表明各个成员共同完成了一个功能特性或是一组功能特性。内聚程度低的话,表

明各个成员提供的功能是互不相干的。

INFO 2:类也要遵循内聚性。如果一个类的方法和属性共同完成了一个功能(或是一系列

紧密相关的功能),这个类就是内聚的。

INFO 3:让类的功能尽量集中,让组件尽量小。

INFO 4: 有可能会把一些东西拆分成很多微小的部分,而使其失去了实用价值。当你需

要一只袜子的时候,一盒棉线不能带给你任何帮助。

11、习惯8:根据契约进行替换

INFO 1:任何继承后得到的派生类对象,必须可以替换

任何被使用的基类对象,而且使用者不必知道任何差异。换句话说,某段代码如

果使用了基类中的方法,就必须能够使用派生类的对象,并且自己不必进行任何

修改。

INFO 2:针对is-a关系使用继承;针对has-a或uses-a关系使用委托。

INFO 3:那么继承和委托分别在什么时候使用呢?

(1)如果新类可以替换已有的类,并且它们之间的关系可以通过is-a来描述,就要

使用继承。

(2) 如果新类只是使用已有的类,并且两者之间的关系可以描述为has-a或是uses-a,

就使用委托吧。

INFO 4:相对继承来说,委托更加灵活,适应力也更强。

12、习惯9:报告所有的异常

INFO 1:从事任何编程工作,都要考虑事物正常状况下是如何运作的。不过更应该想一想,

当出现问题——也就是事情没有按计划进行时,会发生什么。

INFO 2:处理或是向上传播所有的异常。不要将它们压制不管,就算是临时这样

做也不行。在写代码时要估计到会发生的问题。

INFO 3: 决定由谁来负责处理异常是设计工作的一部分。

INFO 4:不是所有的问题都应该抛出异常。

13、习惯10:做代码复查

INFO 1:用户是最好的测试人员。

INFO 2:代码复查和缺陷移除

要寻找深藏不露的程序bug,正式地进行代码检查,其效果是任何已知形式测

试的两倍,而且是移除80%缺陷的唯一已知方法。

——Capers Jones的《估算软件成本》

INFO 3:代码复查最基本的检查列表

(1)代码能否被读懂和理解?

(2) 是否有任何明显的错误?

(3) 代码是否会对应用的其他部分产生不良影响?

(4) 是否存在重复的代码(在复查的这部分代码中,或是在系统的其他部分代码)?

(5) 是否存在可以改进或重构的部分?

INFO 4:对于提升代码质量和降低错误率来说,代码复查是无价之宝。

INFO 5:不进行思考、类似于橡皮图章一样的代码复查没有任何价值。

INFO 6: 同样的功能,不同开发人员的代码实现可能不同。差异并不意味着不好。除非

你可以让某段代码明确变得更好,否则不要随意批评别人的代码。

INFO 7: 要确保代码复查参与人员得到每次复查活动的反馈。作为结果,要让每个人知

道复查完成后所采取的行动。

 

 

相关文章: