标签:
题目:
1、敏捷开发是在什么样的背景下产生的?其主要特点有哪些?什么时候选择敏捷开发更恰当,为什么?
2、Code smell 是如何产生的?有哪些典型的 code smell?代码重构(Code refactoring)有哪些优点?有哪些代码重构的方法?
1.答:敏捷软件开发产生的背景:
(1)软件开发的新挑战
a:快速的市场进入时间,要求高生产率
b:快速变化的需求
c:快速发展的技术
(2)传统的软件开发方法
a:强调过程和文档
b:对变化的适应能力偏弱
敏捷软件开发的特点:
a.敏捷宣言表明的是一些优先级,不必当做圣旨或则教条来争论
b:致力于降低变化的成本
c:价值导向
d:充分发挥人的积极性
e:基于增量和迭代的开发方法
敏捷的试用范围:
产品可靠性要求 | 不高,容忍经常出错 |
需求变化 | 经常变化 |
团队人员数量 | 不多 |
人员经验 | 有资深程序员带队 |
公司文化 | 鼓励变化,行业充满变数 |
实际的例子 | 写一个微博网站 |
用错方式的后果 | 用敏捷的方法卡法登月火箭控制程序,前N批宇航员都挂了 |
从敏捷开发软件的适应范围中,可以得出敏捷开发在产品要求不高,容忍经常出错;需求经常变化;团队人数不多;有资深程序员带队的情况下选择敏捷开发软件更适合。
2.答:Code Smell产生的背景:Code Smell中文译名一般为“代码异味”,或“代码味道”,它是提示代码中某个地方存在错误的一个暗示,开发人员可以通过这种smell(异味)在代码中追捕到问题。代码味道是由我们开发人员根据自己的一些工作经验积累来判断的,有人觉得代码注释可以体现代码结构和质量,还有些人又认为代码注释是用来解释过于复杂代码的一种说明机制。显然,Javadocs? 很有用,但是多少内嵌注释才足以维护代码?如果代码已经编写得足够好,它还需要自己解释吗?从这些我们可以看出代码味道是一种主观评估的机制,在很多情况下面,尽管一些看其来糟透了的代码可能是他人曾经编写最好的代码。在我们工作中,是否有很多这样的声音,”是的,初看起来有点乱,但是它的扩展性不错”。因此,我们需要客观评估代码质量的方法,某种可以决定性地告诉我们正在查看的代码是否存在风险的东西。
典型的Code Smell:
代码重构(Code refactoring)的优点:
1·持续偏纠和改进软件设计
2·使代码更易为人所理解
3·帮助发现隐藏的代码缺陷
4·从长远来看,有助于提高编程效率
重构的方法
1. 提取类/抽离方法
正如上面提到的,像“臃肿的类”(一个类提供了本该有几个类提供的功能)这种代码异味应该将原有类中的方法和属性移动到适当数目的新类中去。旧类中对应新类的方法和属性应该被移除。另外,有时候一些类过于臃肿是因为它包含了被其他类使用本应该是其他类的成员方法的成员方法。这些方法也应该被迁移到合适的类中。
2.提取方法
像上面提到的“过长的方法”这种代码异味可以通过从旧方法中提取代码到一个或多个新方法中消除。
3.分离条件
许多时候,一个方法很长是因为包含好几个分支语句(if-else)。这些分支条件可以被提取和移动到几个单独的方法中。这确实能大大改善代码可读性和可理解性。
4.引入参数对象/保留全局对象
在我做代码审查时发现另外一个很常见的情况 - 好几个参数被传入方法。问题主要与需要从已有方法中增加或者移除一个方法参数有关。在这种场景,建议将相关方法参数组成一个对象(引入参数对象),让方法传递这些对象而不是每个单独的参数。
5.用符号常量替换魔法数字
对于有意义的并且到处被使用的字面常量,应该为它们分配一个命名常量。这能大大增强代码可读性和可理解性。
6.重命名方法
正如上面提到的,模糊不清的方法名会影响代码的可使用性。这些模糊不清的名称应该重命名为有意义的可能与业务术语有关的名称,来帮助开发者通过业务上下文更好地理解代码。这很需要技巧并且要求开发者与业务专家一起协作来理清代码需要满足的业务需求。有趣的是,这种重构方法看起来似乎非常容易理解,但是常常被许多开发者忽视,虽然在Eclipse这种IDE的refactor菜单项中经常出现这一项。
标签:
原文地址:http://www.cnblogs.com/122zy/p/4508861.html