- 浏览: 821931 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (488)
- struts1 (4)
- spring (13)
- extjs (36)
- mysql (3)
- sqlserver (2)
- oracle (37)
- 杂谈 (11)
- 面试相关 (35)
- Java基础知识总结 (5)
- Java重要知识点 线程和io流知识点 (6)
- 服务器相关 (1)
- 生活 (1)
- jsp (7)
- servlet (2)
- junit (3)
- struts2 (9)
- 开发必备 (4)
- 使用开发工具总结的知识 (4)
- ibatis (12)
- ajax (2)
- dwr (2)
- jquery (1)
- 设计模式 (4)
- Lucene的学习 (5)
- 经验总结 (19)
- mysql全文搜索相关 (7)
- hibernate (33)
- Sphinx (1)
- log4j的总结 (1)
- 敏捷开发 (9)
- 持续集成 (15)
- UML使用总结 (1)
- Scrum (1)
- OO(面向对象编程) (1)
- struts1和struts2总结 (1)
- 数据库加密 (1)
- 多线程和Socket编程 (6)
- PowerDesigner (2)
- 权限相关 (1)
- ant应用总结 (4)
- 面试必知知识点总结 (6)
- io流与nio流总结 面试相关 (1)
- 敏捷管理工具的使用 (7)
- hsqldb相关 (1)
- svn源码相关 (2)
- debug调试技巧总结 (1)
- hibernate和ibatis对比相关 (6)
- eclipse mylyn 插件的使用总结 (2)
- fisheye使用总结 (2)
- java泛型总结 (1)
- ssh整合总结 (10)
- SpringSide的学习总结 (1)
- JPA学习总结 (2)
- RoR 总结 (2)
- 模型驱动 总结 (1)
- Oracle SQL优化技巧 (4)
- 数据库相关资料 (1)
- oracle练习相关 (4)
- PowerDesigner 使用总结 (2)
- Struts实现国际化相关 (2)
- 权限框架 Spring Security (1)
- freemarker使用总结 (1)
- jsp servlet总结相关 (3)
- Java NIO总结 (1)
- 自己学习必须 (3)
- 蝴蝶容器相关 (2)
- eclipse插件的使用 (1)
- myeclipse的使用 (1)
- flex相关 (1)
- javaeye重生后总结的知识点 (2)
- 公司学习总结 (3)
- JAXB 相关 (1)
- ECSide (1)
- EdoJs 企业ajax框架 (1)
- RSA加密算法 (1)
- jbpm相关 (1)
- JMF原理 (1)
- MyEclipse使用总结 (1)
- Funsion Charts 相关总结 (3)
- 常用知识2011 (2)
- Flex与Java整合 (1)
- IBM WebSphere相关 (1)
- jQuery使用技巧 (2)
- 2011年面试相关知识点总结 (2)
- sqlserver开发相关 (8)
- eclipse 打jar相关 (2)
- Oracle/Mysql/SqlServer比较 (1)
- WebService Axis1.4开发相关 (4)
- 进制数的转换 总结 (1)
- WebService Axis2.0开发相关 (0)
- iteye Struts2 Spring Hibernate整合相关 (3)
- iteye osgi资料相关总结 (1)
- iteye ifos相关相关 (1)
- iteye 国际化相关 (1)
- iteye Hibernate缓存机制 (4)
- iteye Struts2 总结 (1)
- iteye Struts标签总结 (0)
- iteye web配置文件大全 (6)
- iteye Efs 框架总结 (1)
- iteye sql优化 (2)
- iteye 大数据量高并发的数据库优化 (1)
- iteye 开发相关 (1)
- iteye s1sh 和 s2sh整合中的问题以及解决 (1)
- iteye s1sh整合实例 (1)
- iteye s2sh整合实例 (1)
- iteye 面试相关 基础篇 (1)
- iteye Android相关 (1)
- iteye 面试相关 Web篇 (1)
- iteye Sql Server相关 (0)
- iteye struts1与struts2比较 (1)
- iteye jquery 和Struts2 (0)
- iteye struts2与其他插件整合 (0)
- iteye jquery 开发相关 (1)
- iteye eclipse结合spket(Ext,Jquery)开发相关 (0)
- iteye myeclipse 使用技巧相关 (0)
- iteye Memcached 缓存系统相关 (0)
- iteye 常用软件相关 (0)
- iteye 最新技术预览 AjaxSwing (0)
- iteye struts上传下载相关 (0)
- iteye 新技术相关 (0)
- test (0)
- iteye 开发Java游戏相关 (0)
- iteye Java反编译 (0)
- iteye XML解析相关 (0)
- iteye 压缩ZIP相关 (0)
- iteye 面试相关 (0)
- iteye Android开发相关 (4)
- csdn (0)
- e-inoc (0)
- iteye http错误码对应说明 (0)
- iteye 面试扩展知识点 (0)
- iteye oracle面试相关 存储过程,触发器,游标等 (0)
- iteye english study (0)
- iteye starflow工作流引擎 (0)
- iteye IBM WebSphere Application Server Toolkit使用相关 (0)
- iteye spring3 (0)
- iteye mybatis (0)
- iteye js技巧总结 (0)
- iteye SEO优化相关 (2)
- iteye QUI网页界面集成框架 (1)
- iteye AjaxAnywhere (1)
- iteye Nutz相关 (1)
- iteye ibatis技巧 (0)
- iteye dwz (0)
- 128个ajax/javascript框架 (0)
- iteye 2012 Java Swing教程 (1)
- iteye 码头集装箱相关 (1)
- iteye swing (2)
- 兼职工作 (0)
- 2012 新总结的面试相关知识点 常用知识点 (1)
- 淘宝网店相关 (0)
- oracle 常用函数 2012新总结 (1)
- 我的时尚潮流屋 (0)
- 2012 年 面试新总结知识 (1)
- 技巧 (1)
- 2013总结 (1)
- 2015工作相关 (3)
- springmvc (5)
- EasyPR-Java (1)
- java (2)
- editplus 4.0 注册码 (1)
- android (1)
- oracle连接数据库相关 (1)
- 编程资料总结 (2)
- 20160808 (1)
- visio 2013 (1)
最新评论
-
drew926:
泛型的类型参数可以有多个?这是java哪个版本支持的?
java泛型总结 -
listenan:
赞!非常感谢。
Scrum总结 -
cwscwj:
写的很深刻,谢谢,看了一遍,过段时间打算再看一遍。
Scrum总结 -
hwedwin:
w
Struts 2中的OGNL\EL的使用总结 -
lanni2460:
不错 很好 支持……
sqlserver三个驱动包下载
结队编程是XP极限编程的一个关键实践,如果把结对编程放到整个XP里面会更容易体现出它的价值,所以我觉得分析结对编程的一个整体思路是:
1、适用场景:
XP的适用性在哪里,什么样的项目中适合采用XP,在这样的项目中XP可以起到什么作用。
如果离开了适用场景,XP的适用性都要重新考虑,所以就更不用谈结对编程了;
2、实施条件:
从理论上我们面对的项目可以从XP那里得到很大的价值,但实际中我们的团队具不具备实施XP的条件,即并不是什么样的团队都可以采用XP,特别是结对编程;
3、结对编程的位置和价值:
结队编程在整个XP中的地位,它和其他哪些关键实践有着相辅相成的关系,它可以应对项目实施的哪些问题;
4、结对编程遇到的问题:
结队编程在实施的过程中,会遇到这样那样的阻碍和问题,这些阻碍和问题,可能是因为不恰当的使用引起,可能是因为对XP关键实践的局部采用引起,或其他。
1、适合场景:
适合采用XP的项目特征为:规模小,时间紧,需求变化多,质量要求高
而且我觉得这些特征不是“或”的关系,而是“并”的关系。
如果只是规模小、时间紧,但是需求变化不大,那么敏捷所强调的“拥抱变化”就谈不上了;
如果只是需求变化多,但是时间比较充足,那么可以侧重原形驱动方法;
如果规模比较大,需要几十个/上百个人、半年甚至一两年的项目,那么采用稍微重量级的RUP,还是要稳妥些。
所以如果我们怀疑XP以及结对编程的价值或者实施性的时候,可以考虑考虑我们面对的项目,是不是适合采用XP来开发,在这里我觉得应该强调的特征是需求变化多。
2、实施条件:
在实施条件上,我觉得团队需要具有XP的文化是很重要的,团队成员需要达成一个共识,就是认同XP开发会给项目以及自己带来价值,这种共识需要若干个因素,如团队意思/共享意识等等。
此外XP对团队成员的技术水平要求也较高
如果团队不具有XP的思想意识,以及必要的技术水平的话,那么就更谈不到结队编程的效果了(当然部分水平相当的人还是可以在适当的情况下,采用局部结对编程)
3、结对编程的位置和价值
在XP中,一个关键的假设就是“只注重眼前需求的简单设计而通过重构来适应需求变化”的代价和成本小于“对系统进行充分详细的设计,但是随着需求的变化设计失效”的代价和成本。
所以结队编程的价值在于,我们无法在项目的初期进行一个详细的设计,即使完成一个设计,随着需求的变化,设计也是需要频繁的改动,因此与其我们花费大量的时间和精力来维护不稳定的设计文档的一致性,不如我们简化、延迟设计,用简单的实现来满足当前的需求,而依赖重构来适应需求的变化。
所以结队编程的价值在于:
1、使代码实现的无错误、且最简单;
2、更好的、更有效地使代码扩展性好、易于重构;
3、进行及时、有效的重构,避免单人开发的惰性而不愿重构。
如果我们觉得我们已经有了很成熟的设计,很稳定的架构,可以说我们的系统不需要重构就可以满足所有需求,那么我觉得结队编程的采用价值就大幅度下降了;
如果我们觉得我们的需求会不断变化,我们的设计需要不断的进行调整和代码重构,那么结对编程是这种重构最好的保障和伙伴。
4、结对编程遇到的问题:
结队编程会带来效率的降低
在一个具有实施XP能力的团队,出现这样的问题往往是
i、由于人员的变动,来了新成员
在这种情况下,前期确实会对其搭档产生一定的影响,但是磨刀不误砍柴工,通过结队编程,可以最快的使新成员进入状态,通过后期的高效完全可以弥补前期的消极影响;
ii、后面坐着的人跟不上写代码的人的思路,写代码的人要不断对其讲解
结队编程不仅仅只是一起写代码,在写代码之前也需要一起对需求进行探讨,一起讨论设计方案,达成共识之后才再一起写测试用例,一起编码,一起测试。
如果出现跟不上的情况,那么赶紧停下来,需要讨论的时候到了。
iii、由于每个人有不同的习惯风格,坐在后面的人不习惯写代码人的代码风格
这正是XP另一个关键实践的必要性:代码规范。在采用XP方法后,要求所有成员编写的代码都想出自于一个人之手写的,这样才能使代码本身就是设计,方便所有成员沟通维护。
通过代码规范之后,也才使XP强调的另一个关键实践“代码共同拥有”成为有效。
iv、结对搭档步调不一样,如一个人有事或打电话,或去洗手间,另一个同伴岂不空闲
如果一个人有事那么另一个人可以对设计与实现重新进行思考,思考仍然是软件开发中最重要的事情之一。
此外自己也休息一下,也不是一件很坏的事,呵呵。
结对编程很累
结对编程确实是强度非常大的一件事情,在结对的时候我们就不可能边写代码边带着耳机听音乐了,呵呵。
但是结对可以使两个人精神更加集中,可以扩展思路以创造更简单,更严谨,更便于修改重构的代码,所以这正应对了项目时间紧的要求。
因为XP是一件强度很大的过程,所以XP强调40小时/周的另一实践
总结
上面写得太多了,好像重点不太突出,我觉得是不是采用结队编程,一条关键的依据是:
判断我们代码需不需要重构,如果需要,结对编程就会提供很好的价值,包括代码正确性、严谨性、可扩展性等等,为代码的重构提供很好的基础,并且结队编程克服不想对自己代码进行重构的惰性。
如果判断我们对系统架构设计,已经有了很成熟的经验,且需求的变更不会对设计造成太大影响,那么结对编程就消弱了采用的意义。
1、适用场景:
XP的适用性在哪里,什么样的项目中适合采用XP,在这样的项目中XP可以起到什么作用。
如果离开了适用场景,XP的适用性都要重新考虑,所以就更不用谈结对编程了;
2、实施条件:
从理论上我们面对的项目可以从XP那里得到很大的价值,但实际中我们的团队具不具备实施XP的条件,即并不是什么样的团队都可以采用XP,特别是结对编程;
3、结对编程的位置和价值:
结队编程在整个XP中的地位,它和其他哪些关键实践有着相辅相成的关系,它可以应对项目实施的哪些问题;
4、结对编程遇到的问题:
结队编程在实施的过程中,会遇到这样那样的阻碍和问题,这些阻碍和问题,可能是因为不恰当的使用引起,可能是因为对XP关键实践的局部采用引起,或其他。
1、适合场景:
适合采用XP的项目特征为:规模小,时间紧,需求变化多,质量要求高
而且我觉得这些特征不是“或”的关系,而是“并”的关系。
如果只是规模小、时间紧,但是需求变化不大,那么敏捷所强调的“拥抱变化”就谈不上了;
如果只是需求变化多,但是时间比较充足,那么可以侧重原形驱动方法;
如果规模比较大,需要几十个/上百个人、半年甚至一两年的项目,那么采用稍微重量级的RUP,还是要稳妥些。
所以如果我们怀疑XP以及结对编程的价值或者实施性的时候,可以考虑考虑我们面对的项目,是不是适合采用XP来开发,在这里我觉得应该强调的特征是需求变化多。
2、实施条件:
在实施条件上,我觉得团队需要具有XP的文化是很重要的,团队成员需要达成一个共识,就是认同XP开发会给项目以及自己带来价值,这种共识需要若干个因素,如团队意思/共享意识等等。
此外XP对团队成员的技术水平要求也较高
如果团队不具有XP的思想意识,以及必要的技术水平的话,那么就更谈不到结队编程的效果了(当然部分水平相当的人还是可以在适当的情况下,采用局部结对编程)
3、结对编程的位置和价值
在XP中,一个关键的假设就是“只注重眼前需求的简单设计而通过重构来适应需求变化”的代价和成本小于“对系统进行充分详细的设计,但是随着需求的变化设计失效”的代价和成本。
所以结队编程的价值在于,我们无法在项目的初期进行一个详细的设计,即使完成一个设计,随着需求的变化,设计也是需要频繁的改动,因此与其我们花费大量的时间和精力来维护不稳定的设计文档的一致性,不如我们简化、延迟设计,用简单的实现来满足当前的需求,而依赖重构来适应需求的变化。
所以结队编程的价值在于:
1、使代码实现的无错误、且最简单;
2、更好的、更有效地使代码扩展性好、易于重构;
3、进行及时、有效的重构,避免单人开发的惰性而不愿重构。
如果我们觉得我们已经有了很成熟的设计,很稳定的架构,可以说我们的系统不需要重构就可以满足所有需求,那么我觉得结队编程的采用价值就大幅度下降了;
如果我们觉得我们的需求会不断变化,我们的设计需要不断的进行调整和代码重构,那么结对编程是这种重构最好的保障和伙伴。
4、结对编程遇到的问题:
结队编程会带来效率的降低
在一个具有实施XP能力的团队,出现这样的问题往往是
i、由于人员的变动,来了新成员
在这种情况下,前期确实会对其搭档产生一定的影响,但是磨刀不误砍柴工,通过结队编程,可以最快的使新成员进入状态,通过后期的高效完全可以弥补前期的消极影响;
ii、后面坐着的人跟不上写代码的人的思路,写代码的人要不断对其讲解
结队编程不仅仅只是一起写代码,在写代码之前也需要一起对需求进行探讨,一起讨论设计方案,达成共识之后才再一起写测试用例,一起编码,一起测试。
如果出现跟不上的情况,那么赶紧停下来,需要讨论的时候到了。
iii、由于每个人有不同的习惯风格,坐在后面的人不习惯写代码人的代码风格
这正是XP另一个关键实践的必要性:代码规范。在采用XP方法后,要求所有成员编写的代码都想出自于一个人之手写的,这样才能使代码本身就是设计,方便所有成员沟通维护。
通过代码规范之后,也才使XP强调的另一个关键实践“代码共同拥有”成为有效。
iv、结对搭档步调不一样,如一个人有事或打电话,或去洗手间,另一个同伴岂不空闲
如果一个人有事那么另一个人可以对设计与实现重新进行思考,思考仍然是软件开发中最重要的事情之一。
此外自己也休息一下,也不是一件很坏的事,呵呵。
结对编程很累
结对编程确实是强度非常大的一件事情,在结对的时候我们就不可能边写代码边带着耳机听音乐了,呵呵。
但是结对可以使两个人精神更加集中,可以扩展思路以创造更简单,更严谨,更便于修改重构的代码,所以这正应对了项目时间紧的要求。
因为XP是一件强度很大的过程,所以XP强调40小时/周的另一实践
总结
上面写得太多了,好像重点不太突出,我觉得是不是采用结队编程,一条关键的依据是:
判断我们代码需不需要重构,如果需要,结对编程就会提供很好的价值,包括代码正确性、严谨性、可扩展性等等,为代码的重构提供很好的基础,并且结队编程克服不想对自己代码进行重构的惰性。
如果判断我们对系统架构设计,已经有了很成熟的经验,且需求的变更不会对设计造成太大影响,那么结对编程就消弱了采用的意义。
发表评论
-
Scrum相关
2010-09-08 11:49 1303Scrum坚持如下敏捷开发 ... -
Scrum一个轻量级的软件开发方法
2010-09-08 11:24 1150Scrum一个轻量级的软件 ... -
TDD 测试驱动开发
2010-09-08 10:42 894TDD 测试驱动开发 TDD的基本思路 是通过测试来推 ... -
测试驱动开发
2010-09-07 17:41 854测试驱动开发: 原文 ... -
极限编程
2010-09-07 17:40 921极限编程(Extreme Pro ... -
敏捷开发相关知识
2010-09-07 15:11 1170敏捷开发是与瀑布式开发是相对的。 敏捷开发 ... -
敏捷开发的26个总结
2010-09-07 12:25 851敏捷开发的26个总结 * 用例一完全能够运行后再开发用例二 ... -
敏捷开发总结
2010-08-16 16:50 1241简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。 ...
相关推荐
### 华为OD机试C卷 - 结队编程(多语言实现) #### 题目背景与要求 本题目属于华为OD(Outsourcing Development)机试中的一个具体案例,旨在评估应聘者对于数据结构与算法的理解程度及其编程能力。题目要求通过...
【免费题库】华为OD机试 - 结队编程(Java & JS & Python & C & C++).html
华为OD正版题库,CD卷,2024原题库。超低价可下载包含多种代码和解析,不用购买高价的专栏,任何问题可私信
C++ 网络编程.pdf sock新手进阶编程.chm 精通Windows API-函数、接口、编程实例.pdf
结队编程有哪些好处?有哪些不足? 15.什么是瀑布模型?它的主要特点是什么? 16.什么是增量提交模型?有什么优点? 17.螺旋模型有什么特征?并说明它的优缺点。 18.统一过程模型的有哪几个阶段?每个阶段的任务是...
- **持续的代码评审**和结队编程,确保代码质量。 - **全面的单元测试**,提高软件的可靠性。 - **持续的设计和重构**,保持系统的简洁性。 - **频繁的集成和测试**,减少集成风险。 - **计划游戏**,通过迭代规划和...
《MobHoard:Java编程实现向玩家发送成群结队的怪物系统》 在游戏开发领域,创造丰富多样的敌人和战斗体验是至关重要的。"MobHoard"项目旨在为玩家提供一种机制,通过Java编程语言,能够有效地管理和控制游戏中的...
成群结队(对齐,凝聚) 3D 分离 2D/3D 碰撞 2D/3D 我可以在非ECS/Dots代码中使用它吗? 可以,有一个混合工作流程,游戏对象与实体同步。这也允许在面向对象的编程中使用这个包。当然,可以预料的是,性能会稍微差...
标题 "flocking_diamonds_p5:p5.js 草图动画成群结队的彩色钻石" 描述了一个使用p5.js库创建的互动艺术作品。这个项目展示了一种算法,该算法使得彩色钻石在屏幕上形成类似鸟群或鱼群的行为,即所谓的“群集行为”或...
Processing 是一个开源编程语言和环境,专门用于视觉艺术、数据可视化和交互设计。这个项目可能是为了演示群集行为(也称为“群居”或“flocking”)的概念,这是一种模拟生物群体运动的算法。 描述中提到的“植绒...
在“外星人大战”游戏中,外星人会成群结队地从屏幕顶部向下移动,玩家需要操控飞船躲避外星人并发射子弹进行攻击。当外星人触及屏幕底部或被全部消灭时,游戏状态会发生变化。此外,可能还包括额外的挑战,如特殊的...
外星人根据设定的规则成群结队地移动,形成入侵的阵型。 8. **bullet.py**: 子弹类在此定义,包括发射、移动和检测碰撞的逻辑。当玩家按下射击键时,飞船发射子弹,如果子弹与外星人碰撞,则外星人被消除,同时...
3. 团队合作:“逃课成群结队”或许是一种幽默的表达,但在实际工作中,团队协作是必不可少的。IT项目往往需要团队成员间的紧密配合,培养良好的团队精神对个人职业发展至关重要。 4. 技能多元化:顺口溜中的“办公...
3. **敌人和敌机群**:敌人可以单独出现,也可以成群结队。每架敌机都有自己的AI来决定移动路径和射击时机。 4. **碰撞检测**:pygame提供了`colliderect`函数进行矩形碰撞检测,我们可以用它来判断飞机与子弹、...
在IT行业中,虽然述职报告可能不如编程代码、系统设计或者项目管理那么直接关联,但它仍然是一个重要的沟通工具,尤其对于IT部门的管理者来说。 在本文中,我们看到的是一个教育机构的工作述职报告,其内容主要涵盖...
2. 外星人(Aliens):游戏的主要敌人,成群结队地从屏幕顶部向下移动。 3. 子弹(Bullets):玩家发射的子弹,向上移动,用于击中外星人。 4. 墙壁(Borders):定义了游戏区域的边界,防止飞船或外星人超出屏幕...
在"严重山姆"这款游戏中,玩家通常会面临成群结队的敌人,因此对服务器和客户端的处理能力有着极高的要求。Erlang的并发机制使得游戏服务器可以同时处理多个玩家的指令,保证游戏体验的顺畅。此外,Erlang的热代码...