zoukankan      html  css  js  c++  java
  • 软件工程第四次作业

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

    答:

    (1)产生背景

          ①传统软件开发期限不断拖延,经费不断上升,在限定的时间内很难开发出用户满意的软件,还有后期的难维护

          ②外部环境的影响,比如需求,范围,技术的变化

          ③在项目开始的初期,客户对软件的需求的了解,所以要开发出满足客户的软件需要通过多次修改软件的功能

          ④软件的风险

    (2)主要特点:

              1,个体和交互

              2,可以工作的软件

              3,客户合作

              4,响应和变化

    (3)何时选择敏捷开发:

               人数不多,项目随着客户的要求随时发生变更,高风险项目

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

    答:

    (1)产生:

           Code Smell中文译名一般为“代码异味”,或“代码味道”,它是提示代码中某个地方存在错误的一个暗示,开发人员可以通过这种smell(异味)在代码中追捕到问题。代码不规范,比如有重复代码等就会形成code smell。

    (2)典型的code smell:

                                          Duplicated Cod(重复代码);

                                          Long Metnod(过长函数);

                                          Long Class(过大的类);

                                          Long Parameter List(过长的参数列);

                                          Divergent Changge(发散式变化);

                                          Shotgun  Surgery(散弹式修改);

                                          Feature Envy(依恋情结);

                                          Data Clumps(数据泥团);

                                          primitive obsession(基本类型偏执);

                                          switch statement (switch 惊悚现身);

                                          parallel inheritance jierarchies(平行继承体系);

                                          lazy classv(冗赘类);

                                          speculative generality(夸夸其谈未来性);

                                          temporary field(令人迷惑的暂时字段);

                                          message chain(过度耦合的消息链);

                                          middle man(中间人);

                                          inappromriate intimacy(狎昵关系);

                                          alternative classes with different interface(异曲同工的类);

                                          incomplete library class(不完美的库类);

                                          data class(纯稚的数据类);

                                          refused bequest(被拒绝的遗赠);

                                          comments(过多的注释)。

         (3)优点

               能改进软件设计;使软件更容易理解;能帮助发现隐藏的代码缺陷,找到bug,优化代码,提高软件的开发速度,从而提高系统的稳定性,和可扩展性;能提高编程效率。

         (4)代码重构的方法

                提取类/抽离方法:正如上面提到的,像“臃肿的类”(一个类提供了本该有几个类提供的功能)这种代码异味应该将原有类中的方法和属性移动到适当数目的新类中去。旧类中对新类的方法和属性应该被移除。另外,有时候一些类过于臃肿是因为它包含了被其他类使用本应该是其他类的成员方法的成员方法。这些方法也应该被迁移到合适的类中。

                 提取方法:像上面提到的“过长的方法”这种代码异味可以通过从旧方法中提取代码到应该或多个新方法中消除。

                 分离条件:许多时候,一个方法很长是因为包含好几个语句(if-else)。这些分支条件可以被提取和移动到几个单独的方法中。这确实能大大改善代码可读性和可理解性。

                 引入参数对象/保留全局对象:在我做代码审查时发现另外一个很常见的情况-好几个参数被引入方法。问题主要与需要从已有方法中增加或者消除一个方法参数有关。在这种场景,建议将相关方法参数组成一个对象(引入参数对象),让方法传递这些对象而不是每个单独的参数。

                 用符号常量替换魔法数字:对于有意义的并且到处被使用的字面常量,应该为他买分配一个命名常量。这样大大增强代码可读性和可理解性。

                 重命名方法:正如上面提到的,模糊不清的方法名会影响代码的可使用性。这些模糊不清的名称应该重命名为有意义的可能与业务术语有关的名称,来帮助开发者已通过业务上下文更好地理解代码。这很需要技巧并且要求开发者与业务专家一起协作来理清嗲吗需要满足的业务需求。有趣的是,这种重构方法看起来似乎非常容易理解,但是常常被许多开发者忽视,,虽然在Elipse这种IDE的refactor菜单项中经常出现这一项。

     

  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/CZY134717/p/4360748.html
Copyright © 2011-2022 走看看