提升代码质量的 6 个重构方法

标签: 提升 代码 质量 | 发表时间:2014-02-04 23:16 | 作者:蓝飞
出处:http://www.clanfei.com/

在过去做了不少代码走读,发现了一些代码质量上比较普遍的问题,以下是其中的前五名:

  1. 臃肿的类:类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职责原则”(SRP)的理解。这些类往往会变得很臃肿,是由于不同的且在功能上缺少关联的方法都放在了相同的类里面。
  2. 长方法:方法之所以会变得很长主要是有以下几个原因:
    1. 许多没有关联性的、功能复杂的模块的代码都放在相同的方法内。这主要是开发者缺乏SRP的概念。
    2. 多种条件都放在同一个方法内,这在长方法内经常会发生的。这是由于缺乏McCabe代码复杂度和SRP的概念的比较。
  3. 大量的传参:我经常遇到这几种情况,一些方法跟另一些方法进行交互,或者调用另一些方法的时候传入大量的参数。这就会出现如果更改了其中一个参数,就得在多个方法内进行更改。
  4. 常量值无处不在:经常会发现开发者(尤其是新手)会使用一些具有明确含义的常量值(主要是魔鬼数字),但没有给它们赋予合适的常量变量。这会降低代码的可读性和可理解性。
  5. 模糊的方法名:许多时候,以下取的方法名会影响代码的可读性和可理解性:
    1. 模糊的不具有任何意义的方法名
    2. 技术性的,却没有提及相关领域的名称

6个处理上面代码异味的重构方法

以下是6个可以用来帮助你解决80%(80-20原则)的代码质量问题的重构方法,并能帮助你成为一个更优秀的开发者。

  1. 提取类/抽离方法:正如上面提到的,像“臃肿的类”(一个类提供了本该有几个类提供的功能)这种代码异味应该将原有类中的方法和属性移动到适当数目的新类中去。旧类中对应新类的方法和属性应该被移除。另外,有时候一些类过于臃肿是因为它包含了被其他类使用本应该是其他类的成员方法的成员方法。这些方法也应该被迁移到合适的类中。
  2. 提取方法:像上面提到的“过长的方法”这种代码异味可以通过从旧方法中提取代码到一个或多个新方法中消除。
  3. 分离条件:许多时候,一个方法很长是因为包含好几个分支语句(if-else)。这些分支条件可以被提取和移动到几个单独的方法中。这确实能大大改善代码可读性和可理解性。
  4. 引入参数对象/保留全局对象:在我做代码审查时发现另外一个很常见的情况 -
    好几个参数被传入方法。问题主要与需要从已有方法中增加或者移除一个方法参数有关。在这种场景,建议将相关方法参数组成一个对象(引入参数对象),让方法传递这些对象而不是每个单独的参数。
  5. 用符号常量替换魔法数字:对于有意义的并且到处被使用的字面常量,应该为它们分配一个命名常量。这能大大增强代码可读性和可理解性。
  6. 重命名方法:正如上面提到的,模糊不清的方法名会影响代码的可使用性。这些模糊不清的名称应该重命名为有意义的可能与业务术语有关的名称,来帮助开发者通过业务上下文更好地理解代码。这很需要技巧并且要求开发者与业务专家一起协作来理清代码需要满足的业务需求。有趣的是,这种重构方法看起来似乎非常容易理解,但是常常被许多开发者忽视,虽然在Eclipse这种IDE的refactor菜单项中经常出现这一项。

转自: http://vitalflux.com/top-6-refactoring-patterns-to-help-you-score-80-in-code-quality/

相关 [提升 代码 质量] 推荐:

提升代码质量的 6 个重构方法

- - 蓝飞技术部落格
在过去做了不少代码走读,发现了一些代码质量上比较普遍的问题,以下是其中的前五名:. 臃肿的类:类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职责原则”(SRP)的理解. 这些类往往会变得很臃肿,是由于不同的且在功能上缺少关联的方法都放在了相同的类里面. 长方法:方法之所以会变得很长主要是有以下几个原因:.

使用 JSLint 保证 JavaScript 代码质量

- zhibin - IBM developerWorks 中国 : Web development : Articles,Tutorials
随着富 Web 前端应用的出现,开发人员不得不重新审视并重视 JavaScript 语言的能力和使用,抛弃过去那种只靠“复制 / 粘贴”常用脚本完成简单前端任务的模式. JavaScript 语言本身是一种弱类型脚本语言,具有相对于 C++ 或 Java 语言更为松散的限制,一切以函数为中心的函数式编程思想也为开发人员提供了更加灵活的语法实现.

编写高质量的Java代码

- - 研发管理 - ITeye博客
Java 开发通用方法和准则. 不要在变量和常量出现易混淆字母:int i=1l;. 三元操作符的值类型务必保持一致;. 避免带有变长参数的方法重载:Java 5 引入了变长参数,varags, 用…表示,变长参数必须是最后一个参数,一个方法不能有多个变长参数;. 别让null和空值影响到变长方法,主要出现在在变长方法的重载;.

iOS编写高质量代码

- - SegmentFault 最新的文章
这是一篇读书笔记,快速记录各种高效率编程的技巧和方法. 这些方法是为了提升编码质量和效率,高质量代码利于后期的维护和更新,毕竟不能一份代码到永远. 由于是记录形式,当然不能把整篇内容都写下来,只记录关键性的内容,长期更新. Objective-C使用了消息机制代替调用方法. 区别:使用消息结构的语言,其运行时缩影执行的代码由运行环境来决定.

用JSLint精炼提升JavaScript代码

- - 博客 - 伯乐在线
英文原文: Using JSLint to Refine Your Code,编译: 伯乐在线 – 胡蓉( @蓉_inShanghai). 由于移动应用的盛行和HTML5的广泛运用,JavaScript正越来越流行. JavaScript受欢迎的部分原因是因为它的灵活便捷,你可以快速上手,它不需要重量级的开发环境,也不需要第三方应用支持,只要你打开一个文本编辑器,然后保存,最后通过网页 浏览器运行即可.

如何提高代码质量(管理篇):代码复查

- - 博客 - 伯乐在线
也许你是一位项目经理,也许你是一位项目骨干成员,或者开发小组长. 在我发表“如何提高代码质量”的这一系统文章后,有许多网友都向我抱怨,说他无法把握整个项目组成员的代码质量. 我想,这也是所有项目组普遍存在的问题吧,它通常表现为以下几个问题:. 任何项目组成员都不可避免地出现新手,他们往往是刚刚从大学毕业的学生.

麦肯锡并不神秘(如何提升思维的质量)

- 宋大妈 - 商业哲学评论
请关注:商业哲学评论新浪官方微博:http://weibo.com/resteven. 肯锡并不神秘,方法论铸就神奇”,这是《麦肯锡意识》一书的封面引语. 看了总序和第一章,子方大概已经知道,自己的思维其实很麦肯锡. 不过这句话并不是本文要证明的观点,除了我自己,恐怕没有人会关心这句话的真伪,所以,我还是直接落地,通过对大家可能感兴趣的话题的探讨,间接展现所谓的麦肯锡思维.

javascript严谨模式提升开发效率和质量

- - ITeye博客
JavaScript严谨模式(Strict Mode)提升开发效率和质量(转载). 随着WebApp突飞猛进的发展,Javascript写的WebApp规模越来月庞大,比如典型的代表产品. 腾讯WebQQ、HTML5游戏等等,Javascript越来越需要大量的开发人员多多人协作开发. 同时HTML5、CSS3等新技术和NodeJs项目的高速发展,这几年JavaScript语言借着各种新API陆续被运用到从移动设备到服务器的多个”新领域”中.

如何编写高质量的Javascript代码

- jessie - 蓝色理想
优秀的Stoyan Stefanov在他的新书中(《Javascript Patterns》)介绍了很多编写高质量代码的技巧,比如避免使用全局变量,使用单一的var关键字,循环式预存长度等等. 这篇文章不仅仅从代码本身来考虑如何优化编码,也从代码的设计阶段来考虑,包括书写API文档,同事的review,使用JSLint.