第四次作业(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(引入解释性变量)

posted @ 2015-05-19 09:54  周娟*  阅读(131)  评论(0编辑  收藏  举报