四 敏捷反馈
4、自动验收测试。
5、度量真实的进度:判断工作进度最好是根据实际已花费的时间而不是估计的时间。
6、倾听用户的声音:客户每一个抱怨的背后都隐藏了一个事实,找出真相、修复真正的问题。
五 敏捷编码
1、代码要清晰地表达意图:代码清晰程度的优先级排在执行效率之前,要编写清晰的而不是讨巧的代码。
2、用代码沟通:不要用注释来包裹你的代码。使用细心挑选的名称和清晰的执行路径,代码可以不需要注释。
3、动态评估取舍:没有最佳解决方案,只有最合适的解决方案,在性能、生产力、优雅、成本以及上市时间之间动态评估权衡。
4、增量式编程:采用增量式编程和测试,会倾向于创建更小的方法和更具内聚性的类,不是在埋头盲目地一次性编写一大堆代码。相反,你会经常评估代码质量,并不是地进行许多小调整,而不是一次修改许多东西。
5、保持简单:不要让自己被迫进行过分设计,也不要将代码过分复杂化,应该为自己能够创建出一个简单并且可用的设计而骄傲。除非有不可辩驳的原因,否则不要使用设计模式、原则和高难度技术之类的东西。6
6、编写内聚的代码:让类的功能尽量集中,让组件尽量小。
7、告知,不要询问:不要抢别的对象或是组件的工作,告诉它做什么,而不是提他做什么。
8、根据契约进行替换:Liskov替换规则,任何继承后得到的派生类对象,必须可以替换任何被使用的基类对象,而使用者不必知道任何差异。
针对is-a用继承,针对has-a或uses-a用委托。
六、敏捷调试
1、记录问题解决日志:不要在同一处跌到两次,不妨维护一个保持曾遇到的问题以及对应解决方案的日志。
可以使用如下条目:
1)问题发生日期
2) 问题简述
3)解决方案详细描述
4)引用文章或网址
5)任何代码片段、设置或对话框的截屏
2、警告就是错误:签入带有警告的代码,就跟签入有错误或者没有通过测试的代码一样。
3、对问题各个击破:在解决问题时,要将问题域与其周边隔离开,在向问题发起攻击之前,先查找你的问题解决日志。
4、报告所有的异常:并且处理每一个异常。
5、提供有用的错误信息:提供更易于查找错误细节的方式。发生问题时,要展示出尽量多的支持细节,不过别让用于陷入其中。
七、敏捷协作
1、定期安排会面时时间。
2、架构师必须写代码。
3、实行代码集体所有制:轮换完成系统不同领域中不同模块的不同任务。 possible?
4、成为指导者:在自己擅长的方面帮助团队成员提升水平的同时也提高自己。
5、允许大家自己想办法:作为指导者,应该鼓励、引领大家思考如何解决问题,而不是直接给出答案。
6、准备好后再共享代码:绝不要提交尚未完成的代码,或者是未通过测试的代码。
7、做代码复查:代码刚刚完成时,是寻找问题的最佳时机。
最基本的检查列表:
1)代码能否被读懂和理解?
2)是否有任何明显的错误?
3)代码是否会对应用的其他部分产生不良影响?
4)是否存在重复的代码?
5)是否存在可以改进或重构的部分?
8、即使通报进展与问题:完不成提前说。
八、走向敏捷
1、要一个新的习惯。
2、用新的习惯拯救濒临失败的项目。