第四次作业(1、2小题)
●题目:
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小题)相关推荐
- 2021年人工神经网络第四次作业-第五题:危险品识别
简 介: 通过对于物品X射线数据集合的整理,挑选出15类体积比较大的物品,训练LeNet网络进行识别. 关键词: X射线,危险品识别,LeNet,Paddle #mermaid-svg-wZUMACG ...
- 2021年人工神经网络第四次作业-第一题:LeNet对于水果与动物进行分类
简 介: 对于有五种动物和五中水果组成的FAMNIST数据集合的图像分类问题进行了测试.本文主要是集中在前期的数据库的准备和网络的构建方面.对于网络的详细测试参见在 对于FAMNIST中的十种动物和水 ...
- 2021年春季学期-信号与系统-第十一次作业参考答案-第九小题
▓ 第十一次作业各个小题参考答案 §09 第九小题 9. 已知:ZT{x[n]}=X(z)ZT\left\{ {x\left[ n \right]} \right\} = X\left( z \rig ...
- 2021年春季学期-信号与系统-第十一次作业参考答案-第八小题
▓ 第十一次作业各个小题参考答案 §08 第八小题 8. 已知 ZT{x[n]}=X(z)ZT\left\{ {x\left[ n \right]} \right\} = X\left( z \rig ...
- 2021年春季学期-信号与系统-第十一次作业参考答案-第七小题
▓ 第十一次作业各个小题参考答案 §07 第七小题 7. 已知 X(z)X\left( z \right)X(z) 和 H(z)H\left( z \right)H(z) 如下式所示, 用 zzz 域 ...
- 2021年春季学期-信号与系统-第十一次作业参考答案-第六小题
▓ 第十一次作业各个小题参考答案 §06 第六小题 6. 利用 ZZZ 变换的性质求以下序列 的卷积,已知: (1) x[n]=an−1⋅u[n−1],h[n]=u[n]x\left[ n \righ ...
- 2021年春季学期-信号与系统-第十二次作业参考答案-第六小题
▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §06 第六小题 6. 已知: X(z)=ln(1+az),(∣z∣>∣a∣)X\left( z \right) ...
- 2021年春季学期-信号与系统-第十二次作业参考答案-第七小题
▓ 本文是 2021年春季学期-信号与系统-第十二次作业参考答案中的小题答案 §07 第七小题 1.应用MATLAB中的系统辨识工具,完成下面系统出风机输入功率与输出热风温度之间的传递函数. y(t) ...
- 2020年春季学期信号与系统课程作业参考答案-第十四次作业
信号与系统课程第十四次作业参考答案 ※ 第一题 用闭式表达式写出下面有限长序列的离散傅里叶变换(DFT): (1) x[n]=δ[n]x\left[ n \right] = \delta \left[ ...
- 2021年春季学期-信号与系统-第十四次作业参考答案-第九小题参考答案
本文是 2021年春季学期-信号与系统-第十四次作业参考答案 中各小题的参考答案. §09 第九小题 9.证明DFT的对称性质: 若:DFT{x[n]}=X[k]DFT\left\{ {x\left[ ...
最新文章
- 全球数据进入ZB时代,希捷如何让数据创造深价值?
- 皮一皮:这这这..太真实了...
- UVA11100旅行(大包装小包,问最少多少个包)
- Hibernate- 包作用详解
- keyshot卡住了还能保存吗_相机希望你知道的13件事 keyshot相机切换事件
- XML 文档结构必须从头至尾包含在同一个实体内
- Best Time to Buy and Sell Stock III O(n) 求解方法
- 分布式存储系统学习笔记(一)—什么是分布式系统(4)—容错机制
- C/C++[Shortest Distance]
- C#中MessageBox用法大全
- 职场动物进化手册(转自天涯)
- .NET报表控件ActiveReports 教程:应用系统中如何完成各种报表系统的需求
- 电脑软件快捷方式不显示图标
- 闰年c语言循环计算方法,C语言计算有多少闰年(答案原创)
- linux root定时脚本,shell之定时周期性执行脚本的方法示例
- python图片显示文本框_Python3 tkinter基础 Text image 文本框中插入图片
- 【城北徐公之机器学习】感知机模型
- html5+自动播放轮播插件,15个超强的jQuery/HTML5图片轮播插件
- python个性化推荐系统毕业设计_个性化推荐系统架构设计(一)
- 主流自媒体推广平台有哪些 如何用自媒体引流
热门文章
- 【转载】【SQL】Sql Server Management Studio 18 打开闪退问题
- 哈夫曼编码(Huffman coding)的那些事,(编码技术介绍和程序实现)
- 减小服务器负担,Apache启用mod_expires模块
- Xamarin.Android开发实践(六)
- JAVA中list,set,数组之间的转换详解
- OJ-1:时钟问题【九度1553】
- IIS网站设置禁止IP访问设置方法
- 【转载】HTML之表单的设计(十)
- DeBruijin HDU - 2894(????????)
- https的安装(基于阿里云)