- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
极限编程简介 原著 其它极限编程相关著作 目录 极限编程 重构+设计的原则+浮现式设计 自动测试+测试驱动开发 领域模型+领域驱动设计(非极限编程内容) 修改代码的四个原因+总的图示 极限编程的价值观和原则 问题:什么是敏捷开发? 回答: 90年代开始流行的一种开发方法体系,现已成为欧美主流开发方法 主要特点:迭代增量式开发 主要体系:极限编程,scrum等 敏捷宣言 (2001):?个体和交互??????? 胜过???过程和工具?可以工作的软件??? 胜过???面面俱到的文档?客户合作????????? 胜过???合同谈判?响应变化????????? 胜过???遵循计划(虽然右项也具有价值,但左项具有更大的价值) 问题:为什么欧美热衷于研究方法论? 回答: 软件公司多,竞争激烈 咨询公司的出现 为了提高开发效率,降低成本 工程中的例子:吸纳员工vs请顾问结对编程,团队成员人数及角色的稳定,但分工是会变的 总之:敏捷开发不解决技术问题,不能帮助团队做出原来做不出的产品,但可以帮助团队降低开发成本(提高开发效率),提高产品质量(降低缺陷率) 问题:敏捷迭代流程与瀑布流程的区别? 回答: 问题:什么是极限编程? 回答: 极限编程是一种轻量级软件开发方法论(eXtremeProgrammin,简称xp) 其特点是 简单、快速、低缺陷率、适应需求变化。 是敏捷开发中最著名的方法 由kent beck1996年开发C3项目时提出 问题:极限编程与敏捷开发的关系? 回答: 问题:什么是方法?为什么要使用方法? 回答: 什么是方法? ——方法就是做事的手段、方式、流程。 为什么要使用方法? ——使用方法可以提高做事的成功率 什么是方法论? ——方法论即一组方法的集合,也就是一组用于确保成功的规则的集合。 为什么要使用方法论? ——使用方法论可以最大限度地提升做事的成功率。 问题:极限编程的价值观、原则、实践各有哪些? 回答: 价值观: 沟通 反馈 简单 勇气 尊重 原则: 流式开发 小步快跑 反省 冗余(等) 主要实践: 坐在一起、现场客户、结对编程 重构、浮现式设计、测试驱动开发 用户故事与周循环、持续集成(等) 补充:实践间的关系:自动测试-重构-浮现式设计 与 测试驱动开发,即自动测试是最基本的实践;另,程序员为什么不喜欢写测试? 问题:极限编程的开发流程是怎样的? 回答: 问题:为什么要使用极限编程? 回答: Xp主要解决: 不能适应需求变化——周/日迭代 软件缺陷多——结对编程、测试驱动开发 代码质量低——重构 设计不良——浮现式设计 项目中浪费大——现场客户、弹性计划 开发效率低——以上所有、团队协作、“拉”模式 问题:什么是重构? 回答: 定义: 重构是在不改变软件外部行为的前提下改善其内部结构 本质上说: 重构就是在代码写好后改进它的设计 简单来说: 就是一种整理代码的方法,以提高代码的质量 注:不是所有整理代码都是重构,重构有一个前提:自动测试,一个目标:设计原则 另外还有两个原则:小步快跑 和 两顶帽子 问题:为什么要重构? 回答: 重构vs不重构 (代码质量主要有正确性,可读性,可维护性,可扩展性、稳定性等) 问题:如何重构? 回答: 一次重构的步骤: ①发现“代码坏味”(即代码中不符合设计原则的部分) ②使用重构手法消除代码坏味 ③自动测试,保证重构没有改变代码外部行为 然后不断重复以上三步,改进代码的设计 模块重构的步骤 函数级整理、对象级整理、业务逻辑的整理 注:c语言中可将一个.c当做一个类/对象 问题:代码坏味有哪些? 回答: 四大类: 不可读(13项) 词不达意——函数改名 超长函数——抽取函数 过长参数列——用函数取代参数 抽象层级不一致——抽取函数 不简洁(8项) 重复代码——合并代码 重复逻辑——合并逻辑 过度设计——移除间隔层 不面向对象(7项) 过程代码——生成对象 不单一职责(4项) 发散式变化——切分代码 散弹式修改——重组代码 代码耦合——添加间隔层 or 依赖注入 层间耦合——领域层与界面层分离 or 软件与硬件分离 问题:为什么要“增加函数减少参数”?具体如何操作? 回答: (1)提高代码可读性 (2)减少代码间的耦合 (3)降低代码复杂度(圈复杂度),易于维护 Set_type(A/B) -set_type_A() 与set_type_B() 问题:什么是抽象层级不一致? 回答: 即底层函数包含细节,然后一层层封装,屏蔽细节 高层函数应读起来像“英语文章”,不要涉及底层细节 总之即,底层——抽象层级低,细节多,粒度小
文档评论(0)