从Head First Java中了解了极限编程的概念,感觉很有吸引力。对书中提到的规则谈一点体会。
Extreme Programming(XP)极限编程的基本规则
Make small, but frequent, release.
这样,在开发的过程中随时都有能运行的系统实现,这样可以方便开发者和用户不断体验和改进。
Write the test code first.
Develop in iteration cycles.
结合其他就是:写一点测试代码,完成刚好能通过测试的实现代码;然后增加一点功能和测试代码,为了通过测试,在增加部分测试代码。每次迭代过程同时测试以前的所有代码,这样可以保证新加的代码没有破坏以前的代码。
Don't put in anything that's not in the spec.
每次迭代都有一个明确的目标,那就是通过测试代码。
No killer schedules; Work regular hours.
不用加班当然是好事啦。
Refactor whenever and wherever you notice the opportunity.
代码有问题,早点下狠心重构,比问题越拖越久代价小些。
Don't release anything until it passes all the tests.
每次迭代虽然改动不大,但是正确性一定要保证。
Set realistic schedules, based around small releases.
太大的计划,再牛的人也是难以完全掌握的。
So, keep it simple.
Program in pairs, and move people around so that everybody knows pretty much everything about the code.
明确每个人的分工和责任是必要的,但是不能以此为由就把每个模块搞成一个独立小王国,要不以后出了问题也不好协调,交接工作也非常麻烦。
个人觉得极限编程的这些特点都非常有针对性,几乎每一条原则都对应着程序员的一个弱点,甚至可以说人性的弱点。而且这种迭代开发的方法也特别适合小项目,比如说研究生课程的Project,肯定没那么多时间完整地分析,设计然后再实现、测试。等学完Java Head First以后,找时间再好好学学。