`

6 个重构方法可帮你提升80%的代码质量

阅读更多

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

  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://vipshichg.iteye.com/blog/2011581

分享到:
评论

相关推荐

    如何用ChatGPT帮你写代码.zip

    2. **代码审查**:当你完成一部分代码后,可以将代码贴给ChatGPT,让它帮助检查代码质量,提出优化建议,或者指出潜在的错误和安全问题。这样有助于提高代码的健壮性和可读性。 3. **学习新语言或框架**:如果你正...

    idea代码提示器插件,超级好用

    对于经验丰富的开发者,它则是一种提升效率和保持代码质量的工具。 总之,"Idea代码提示器插件"如Codota,是IntelliJ IDEA生态系统中的重要组成部分,它们通过智能化的辅助功能,使得开发者在编写代码时更加...

    idea十大隐藏快捷键 整理使用,教你快速摸鱼

    这个快捷键是快速修复问题和提升代码质量的好帮手。 2. **Ctrl + Shift + Alt + N**:这个快捷键可以让你快速打开任意一个类、方法或变量。只需要输入一部分名称,IDEA就会列出匹配的选项,非常方便。 3. **Ctrl +...

    IDEA一些有用的小技巧

    假设我们需要重构一个方法,但不确定所有引用的地方是否都正确更新了。此时可以使用 `Shift + F6` 快速重命名,IDEA会自动提示并更新所有相关引用。 ##### 3.2 实战案例:使用Live Templates编写循环 在编写循环时...

    SQl_Prompt安装包

    它提供了智能化的SQL提示、格式化、重构以及性能分析等功能,极大地提升了SQL编码的效率和质量。下面将详细介绍SQL Prompt的安装过程以及其在数据库工作中的应用场景。 1. 安装过程: SQL_Prompt_V5.3.4.1是SQL ...

    OMToolkit介绍(3) :Web Framework 实现

    通过自动化流程,它可以减少错误,提高代码质量,使开发者更专注于业务逻辑的实现,而非基础架构的搭建。 综上所述,OMToolkit作为一个集成工具,其核心价值在于简化Web框架的使用,通过代码生成和框架集成功能,...

    Eclipse中文教程

    它可以安全地修改代码结构,如重命名变量、提取方法等,而不会破坏现有功能,这对维护和优化代码质量大有裨益。 总的来说,"Eclipse中文教程"会帮助你掌握这个强大的开发工具,从新建项目到编写、调试、运行和管理...

    swift-Depcheck是Swift项目的依赖性分析器工具

    总的来说,Swift-Depcheck是Swift开发者不可或缺的工具之一,它能够提升代码质量,简化项目结构,对于任何致力于提升开发效率和代码健康度的团队来说都是一个强大的辅助。通过深入理解和有效利用Depcheck,你可以更...

    eclipse_常用快捷键

    ### Eclipse 常用快捷键详解 ...熟练掌握这些快捷键能够显著提升编码速度和质量,使得开发者能够更加专注于代码逻辑而非工具操作。虽然这里只列举了一部分,但在实际使用中可以根据自己的需求探索更多快捷键。

    eclipse快捷键

    - **重构(Refactor)*: Eclipse提供了强大的重构功能,如重命名变量、提取方法等,可以通过`Alt + Shift + R`等快捷键快速访问这些功能,极大地提高了代码质量和维护性。 ### 结论 掌握Eclipse的快捷键不仅能显著...

    十条建议帮你提高Python编程效率

    此外,实时支持flake8和PEP8等工具可以让代码遵循Python的最佳实践标准,从而进一步提升代码质量和开发速度。 #### 三、遵循Python代码规范 Python有一套成熟的代码规范,主要包括PEP 8(Python Enhancement ...

    前端开源库-html2jade

    总之,HTML2Jade是前端开发中的一个重要工具,它帮助开发者在HTML和Jade之间自由切换,提升了代码质量和开发效率。对于想要尝试Jade或者已经习惯Jade语法的开发者来说,这款开源库无疑是一个宝贵的资源。

    refactor-recycle-rewind:关于 clj-refactor 的闪电演讲的示例代码和演示文稿

    在IT行业中,尤其是在编程领域,重构是一项至关...通过研究这些内容,JavaScript开发者不仅可以提升ClojureScript的技能,还能学习到如何在自己的项目中应用优秀的重构策略,提高代码质量,从而成为更出色的开发者。

    eclipse常用的快捷键

    掌握一些常用的快捷键可以极大提升开发速度和代码质量。 #### 1. **导入语句 (Ctrl + Shift + O)** - **作用**:自动导入当前文件中缺失的import语句。 - **应用场景**:当我们在编写代码时引用了某个类但尚未添加...

    文本字符串批量替换工具

    文本字符串批量替换工具是一种高效且实用的软件,主要用于在大量文件中进行文本内容的快速查找与替换。在编程和网站开发中,我们经常会遇到...熟练掌握并合理利用这类工具,对于提升工作效率和代码质量有着积极的作用。

    Android学习与项目开发

    首先,Android Studio基于IntelliJ IDEA,提供了丰富的代码补全和重构功能,极大地提高了开发效率。安装Android Studio后,你需要配置Android SDK,这是所有Android开发的基础,包含了不同版本的Android系统库、构建...

    read-open-source-code:阅读开源项目的源代码

    阅读开源项目的源代码是提升编程技能、学习新框架和理解技术实现原理的重要方式。开源代码提供了无尽的学习资源,特别是对于Java开发者来说,有众多高质量的开源项目可以选择。本篇文章将深入探讨如何有效地阅读和...

    PHPStorm-Settings

    ** inspections**:在 `Editor` -> `Inspections` 中,你可以开启或关闭各种代码质量检查,如语法错误、未使用的变量、不推荐的函数等。合理设置能帮你及时发现潜在问题。 **Run Inspection By Name**:在 `Main ...

Global site tag (gtag.js) - Google Analytics