经管08018_XP起步:其它部分

“XP起步”部分,到现在已经把正确的思维习惯介绍完毕。

而这些方面:
1、简单设计;
2、共享代码所有权;
3、编码标准;
4、每周40小时工作制
会自然的依序出现。

其它的:
1、现场客户;
2、验收测试;
3、教练和跟踪者
就可能要花花一些时间。

一、简单设计:
1、运行所有测试;
2、不包括重复代码;
3、清楚地表现出程序员对全部代码的意图;
4、包括尽可能少的类和方法。

简单的才会保留下来!

如何做到简单设计:
1、首先写验收测试;
2、保持每个类只负责一件事;
3、使用Demeter法则;——待介绍
4、使用定性的概念;——待介绍
5、使用CRC卡片(白板)来探索;——付诸行动!离开电脑(开发环境),在白板前进行设计

二、代码所有权
开发团队中的每个人都具有权力和义务修改它。
纪律——单元测试+代码版本控制

三、现场客户
如果客户没有给你提供一个全职的、一流的合作人员,请求他们免除这个项目。
因为他们不是认真的。
例外:
1、管理者或者开发者之一就是领域专家;
2、做探索性工作,客户也不知道自己想要什么;
3、已经有良好的沟通渠道。

四、验收测试
知道你什么时候做完。
单元测试给开发人员信心;验收测试给客户信心。
验收测试是开发者和客户直接的合同。
如何写验收测试?什么时候写验收测试?测试什么?
自动化验收测试。
功能测试与单元测试。功能测试应该是开发人员跟很多测试人员共同完成。

五、编码标准
保持团队不会被无用的小事弄得心烦意乱。
格式化编辑工具+好的易于执行的协议!

六、加班不是答案
“可持续发展”!
加班:你不想工作的时候而花费在工作上的时间。

七、一幅画胜过千言万语
找到好的“比喻”

八、寻求指导
跟一个伟大的老师学习1天,胜过自己勤奋的学习1000天。

九、保持记录
搜集数据、保持记录、做好跟踪:
1、鼓励每个人更好的估算;
2、更好的识别项目进度;
3、识别出问题的范围。
跟踪:
1、估算和实际执行的情况;
2、创建的和通过的验收测试。

wiki!

经管08017_XP起步:持续集成及过程至上

“持续集成”:降低风险、更易查错、保持速度。
 
如何持续集成:
1、每个配对做足够的单元测试;
2、“集成机器”——公用;
3、保持代码最新;(版本控制和管理)
 
到达任何地方都没有捷径可走。
始终停留在过程中,不要偏离方向,注意:
1、提高注意力;
2、使漂流趋势更明显;
3、保持领先;
4、行为规律;
5、避免最后期限的压力;
6、首先考虑广度;——产品的业务价值
7、与客户重新协商;
8、一起坚持
9、推迟非业务的细目;
10、偶尔加班;
11、了解并跟踪方法的效果。

经管08016_XP起步:关于“重构”

使代码运行,使代码正确,使代码运行得更快。
 
重构,使代码正确。
重构,使代码简单。
 
增加代码比删除代码更容易。
使变化成为可能。
将所学知识运用到代码中。
 
使变化的风险减小,使优化更容易。
 
如何重构:
1、先编写运行测试;
2、先编写代码,然后在重构代码;
3、将增加新的功能视为重构代码的机会;
4、将纠正错误视为重构的机会。
 
何时重构:
不要拖延时间,看到机会就重构。
 
什么时候不需要重构:
1、在代码不能工作或者需要重写代码的时候;
2、在不确定如何能使重构进行得更好的情况下;
3、不要凌驾于客户的需要之上进行重构。

经管08015_XP起步:关于“结对编程”

结对编程的好处:
1、代码质量
2、速度——代码、沟通
3、降低风险——交叉培训

如下几个因素增加了项目失败的风险:
1、进度缓慢;
2、缺乏充分的沟通;
3、过分依赖于个人英雄主义行为。

如何进行结对编程:
1、驾驶员和领航员——互换:
2、交换配对——不要在一个任务进行的过程中交换配对
3、经常休息
4、坐在汽车后座对司机有影响的人
5、花一些时间学习工具
6、花一些时间来创建共同的词汇表
7、将设计讨论局限在一个小范围内
8、不要放弃
9、物理环境要适合结对编程
10、开发环境标准化
11、排除异己!
12、尊重和爱!

什么时候不需要结对编程:
1、探索新的事物;
2、针对有可能产生错误的问题上,有多种想法时。

在结对编程和单独编程之间寻找折中。

经管08014_XP起步:关于“测试”

成功并不是不允许犯错误,而是不能犯同样的错误。

测试用例:
1、保持代码的简洁
2、将测试用例视为文档(比文档更直观、更详细、更有效、更有价值,并且永远是最新的)

编写测试用例:
1、测试例运行失败
2、重构代码、重构测试用例

测试/代码 步骤:
1、编写一个测试用例;
2、编译这个测试用例;
3、编写足够的测试用例编译所需要的代码;
4、运行测试用例,测试失败;
5、编写足够的测试用例通过所需要的代码;
6、运行测试用例,测试通过;
7、为达到代码简洁清晰的目的,重构代码,一次且仅一次;
8、重复以上步骤。

采用尽量小的步骤、经常编写测试用例、采用尽量小的步骤。
写小的测试用例、少的代码、使测试通过。
做一次修改、如果测试失败、一定是这个修改引起。

测试什么:积累的过程!——学习已有的开源项目。

如何开始:用测试框架(如jUnit),调用部件库、方法、功能编写代码。

测试的挑战:
1、测试用户界面:用户界面与后台业务逻辑分离
2、在一个小的空间中做测试
3、测试Web
4、测试需要运行速度足够快