●题目:

1、敏捷开发是在什么样的背景下产生的?其主要特点有哪些?什么时候选择敏捷开发更恰当,为什么?

2、Code smell 是如何产生的?有哪些典型的 code smell?代码重构(Code refactoring)有哪些优点?有哪些代码重构的方法?

●回答:

1.1、背景:

1)20世纪60年代,软件作坊,软件规模小,以作坊式开发为主;

2)70年代,软件危机,硬件飞速发展,软件规模和复杂度激增,引发软件危机;

3)80年代,软件过程控制,引入成熟生产制造管理方法,以“过程为中心”分阶段来控制软件开发(瀑布模式),一定程度上缓解了软件危机;

4)90年代,重型过程,软件失败的经验促使过程被不断增加约束和限制,软件开发过程日益“重型化”,开发效率低、响应速度变慢;

5)2001~今,敏捷被普遍认可并迅速流行。

1.2、主要特点:

敏捷开发是一种以人为核心的、迭代的、循序渐进的开发方式,其主要特点有:

1)个体与交互重于过程与工具;

2)可用的软件重于完备的文档;

3)客户协作重于合同谈判;

4)响应变化重于遵循计划。

1.3、何时采用敏捷开发:

以下情况下选择敏捷开发较为合适:

1)项目团队的人数不能太多;

2)项目经常发生变更,高风险的项目实施;

3)开发人员可以参与决策。

2.1、Code smell :

代码异味(code smell),是指在代码之中潜在问题的警示信号.并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并做出相应决定。它是提示代码中某个地方存在错误的一个暗示,开发人员可以通过这种smell(异味)在代码中追捕到问题。

2.2、典型的 code smell:

代码重复( Duplicated Cod)

太多的注释(comments)

类别代码(type code)

过长函数(Long Method)等

2.3、代码重构(Code refactoring)的优点:

1)增进代码内部的清晰性和一致性;

2)提高编程效率,提高代码可读性;

3)方便程序的后期维护等。

2.4、几种常见的代码重构:

1)Extract Method(提取函数):让每个函数只做一件事,抽取能够被组织在一起的代码,并单独抽取为一个函数。如果函数的粒度小,被复用的机会就更大。

2)Inline Temp(内联临时变量):重构前要保证这个临时变量只被赋值一次,所以当遇到for等循环语句时,要注意

被内联的变量的值是否会在循环中被改变。有时在执行for之前定义固定的临时变量是必要的。尤其是当临时变量取自某对象的属性,而这个对象将在for循环中被更改。

3)Replace Temp with Query(以查询取代临时变量)

4)Replace Nested Conditional with Guard Clauses(以卫语句嵌套条件表达式)

5) Introduce Explaining Variable(引入解释性变量)

转载于:https://www.cnblogs.com/zj326681/p/4513744.html

第四次作业(1、2小题)相关推荐

  1. 2021年人工神经网络第四次作业-第五题:危险品识别

    简 介: 通过对于物品X射线数据集合的整理,挑选出15类体积比较大的物品,训练LeNet网络进行识别. 关键词: X射线,危险品识别,LeNet,Paddle #mermaid-svg-wZUMACG ...

  2. 2021年人工神经网络第四次作业-第一题:LeNet对于水果与动物进行分类

    简 介: 对于有五种动物和五中水果组成的FAMNIST数据集合的图像分类问题进行了测试.本文主要是集中在前期的数据库的准备和网络的构建方面.对于网络的详细测试参见在 对于FAMNIST中的十种动物和水 ...

  3. 2021年春季学期-信号与系统-第十一次作业参考答案-第九小题

    ▓ 第十一次作业各个小题参考答案 §09 第九小题 9. 已知:ZT{x[n]}=X(z)ZT\left\{ {x\left[ n \right]} \right\} = X\left( z \rig ...

  4. 2021年春季学期-信号与系统-第十一次作业参考答案-第八小题

    ▓ 第十一次作业各个小题参考答案 §08 第八小题 8. 已知 ZT{x[n]}=X(z)ZT\left\{ {x\left[ n \right]} \right\} = X\left( z \rig ...

  5. 2021年春季学期-信号与系统-第十一次作业参考答案-第七小题

    ▓ 第十一次作业各个小题参考答案 §07 第七小题 7. 已知 X(z)X\left( z \right)X(z) 和 H(z)H\left( z \right)H(z) 如下式所示, 用 zzz 域 ...

  6. 2021年春季学期-信号与系统-第十一次作业参考答案-第六小题

    ▓ 第十一次作业各个小题参考答案 §06 第六小题 6. 利用 ZZZ 变换的性质求以下序列 的卷积,已知: (1) x[n]=an−1⋅u[n−1],h[n]=u[n]x\left[ n \righ ...

  7. 2021年春季学期-信号与系统-第十二次作业参考答案-第六小题

    ▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §06 第六小题 6. 已知: X(z)=ln⁡(1+az),(∣z∣>∣a∣)X\left( z \right) ...

  8. 2021年春季学期-信号与系统-第十二次作业参考答案-第七小题

    ▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §07 第七小题 1.应用MATLAB中的系统辨识工具,完成下面系统出风机输入功率与输出热风温度之间的传递函数. y(t) ...

  9. 2020年春季学期信号与系统课程作业参考答案-第十四次作业

    信号与系统课程第十四次作业参考答案 ※ 第一题 用闭式表达式写出下面有限长序列的离散傅里叶变换(DFT): (1) x[n]=δ[n]x\left[ n \right] = \delta \left[ ...

  10. 2021年春季学期-信号与系统-第十四次作业参考答案-第九小题参考答案

    本文是 2021年春季学期-信号与系统-第十四次作业参考答案 中各小题的参考答案. §09 第九小题 9.证明DFT的对称性质: 若:DFT{x[n]}=X[k]DFT\left\{ {x\left[ ...

最新文章

  1. 全球数据进入ZB时代,希捷如何让数据创造深价值?
  2. 皮一皮:这这这..太真实了...
  3. UVA11100旅行(大包装小包,问最少多少个包)
  4. Hibernate- 包作用详解
  5. keyshot卡住了还能保存吗_相机希望你知道的13件事 keyshot相机切换事件
  6. XML 文档结构必须从头至尾包含在同一个实体内
  7. Best Time to Buy and Sell Stock III O(n) 求解方法
  8. 分布式存储系统学习笔记(一)—什么是分布式系统(4)—容错机制
  9. C/C++[Shortest Distance]
  10. C#中MessageBox用法大全
  11. 职场动物进化手册(转自天涯)
  12. .NET报表控件ActiveReports 教程:应用系统中如何完成各种报表系统的需求
  13. 电脑软件快捷方式不显示图标
  14. 闰年c语言循环计算方法,C语言计算有多少闰年(答案原创)
  15. linux root定时脚本,shell之定时周期性执行脚本的方法示例
  16. python图片显示文本框_Python3 tkinter基础 Text image 文本框中插入图片
  17. 【城北徐公之机器学习】感知机模型
  18. html5+自动播放轮播插件,15个超强的jQuery/HTML5图片轮播插件
  19. python个性化推荐系统毕业设计_个性化推荐系统架构设计(一)
  20. 主流自媒体推广平台有哪些 如何用自媒体引流

热门文章

  1. 【转载】【SQL】Sql Server Management Studio 18 打开闪退问题
  2. 哈夫曼编码(Huffman coding)的那些事,(编码技术介绍和程序实现)
  3. 减小服务器负担,Apache启用mod_expires模块
  4. Xamarin.Android开发实践(六)
  5. JAVA中list,set,数组之间的转换详解
  6. OJ-1:时钟问题【九度1553】
  7. IIS网站设置禁止IP访问设置方法
  8. 【转载】HTML之表单的设计(十)
  9. DeBruijin HDU - 2894(????????)
  10. https的安装(基于阿里云)