代码重构

简介:
 开发人员可能听到过"bad smell"这个词,这个词用在软件编码中是什么意思呢? 代码还有smell吗?当然没有,正如计算机病毒,bug等词一样,这只是个形象的说法。这个词在这里的意思是代码实现了需求,但是代码却不精炼,冗余,结构混乱,难读懂,难维护,难扩展等等。与之相对应的一个词是"refactor",即代码重构。我们在看些外国人写的程序时可以发现,他们的代码里一般会定义大量的类、接口、方法,类与类,类与接口之间很多是继承和实现的关系,方法的代码行数很少,超过20行代码的方法不多,看他们的代码感觉最多的就是方法之间的调来调去,不像我们的代码,一个方法下来几十上百甚至两三百行都是最基本的语句构成,很少调用自己的方法。两相比较,可以看出,前者在结构上更清晰,通过类视图就可看出设计意图,并且总的代码量不会高于后者,而后者代码量庞大,代码冗余现象严重,结构不清晰,很难维护,如要修改某个错误,可能涉及到要修改的代码点很多,这样后来的维护者就很头疼了。造成这种状况的原因有这样一些:
  1.经验不足,分析设计不到位
  2.敏捷开发,虽然经验很多,但为了快速开发,没有经过分析设计
  3.缺乏意识,只为实现功能而写代码,不管代码质量
  对于这样的代码,我们怎样将其变得更为精炼和易于维护呢?这就是代码重构。重构不是针对功能,纯粹是对代码本身。重构后的代码不会影响到系统的运行。
  我们来看看可以在哪些方面对代码进行重构:
  1.重命名:对类,接口,方法,属性等重命名,以使得更易理解
  2.抽取代码:将方法内的一段代码抽取为另一个方法,以使得该段代码可以被其他方法调用,这是重构中很重要很常用的,此举可以极大的精炼代码,减少方法的代码行数
  3.封装字段:将类的某个字段转换成属性,可以更加合理的控制字段的访问
  4.抽取接口:将类的某些属性,方法抽取组成个接口,该类自动实现该接口
  5.提升方法内的局部变量为方法的参数:这主要是在写代码的过程中会使用到
  6.删除参数:将方法的一个或多个参数删掉
  7.重排参数:将方法的参数顺序重新排列

  实际应用中,用的最多的是1、2、3,我们可以在写代码的时候有意识的运用代码重构,这样当我们完成编码时代码的质量也能得到保证。




本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2011/07/15/2107577.html,如需转载请自行联系原作者

目录
相关文章
|
人工智能 自然语言处理 开发者
Copilot的基本原理
【2月更文挑战第13天】Copilot的基本原理
695 3
Copilot的基本原理
|
存储 Java Windows
Java21 JDK下载安装及Windows环境变量配置
JDK是Java的开发工具包,要进行Java学习或开发之前,需先下载安装,下载地址如下:提示:这网址里面有三个扩展名的文件,分别是“.zip”、“.exe”和“.msi”,鄙人选择的是.exe的文件,下方的安装和环境的配置也是安装该文件的安装程序进行的。
2659 2
|
Java Linux 数据安全/隐私保护
jdk21(最新版) download 配置(linux window mac)
不同系统使用最新版jdk后续持续更新 可评论区提问
3199 0
|
设计模式 供应链
一文教会你如何写复杂业务代码
了解我的人都知道,我一直在致力于应用架构和代码复杂度的治理。 这两天在看零售通商品域的代码。面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。针对该命题,我进行了比较细致的思考和研究。
37847 3
|
NoSQL Redis
shiro的session信息放redis反序列化异常解决
shiro的session信息放redis反序列化异常解决
383 0
|
SQL 监控 Java
如何判断Springboot项目中的数据池启动成功
这篇文章介绍了多种方法来判断Spring Boot项目中的数据池(如HikariCP)是否启动成功,包括查看启动日志、验证数据库连接、配置测试查询、检查数据源Bean初始化、使用Spring Boot Actuator、检查数据库操作执行情况、捕获初始化错误和启用SQL监控等。
如何判断Springboot项目中的数据池启动成功
WXM
|
Oracle Java 关系型数据库
Java JDK下载安装及环境配置超详细图文教程
Java JDK下载安装及环境配置超详细图文教程
WXM
9396 3
|
JSON JavaScript 数据格式
vue 格式化展示json(含彩色样式)
vue 格式化展示json(含彩色样式)
834 1
|
SpringCloudAlibaba Cloud Native Dubbo
SpringBoot和SpringCloud,SpringCloudAlibaba版本依赖关系
由于 Spring Boot 3.0,Spring Boot 2.7~2.4 和 2.4 以下版本之间变化较大,目前企业级客户老项目相关 Spring Boot 版本仍停留在 Spring Boot 2.4 以下,为了同时满足存量用户和新用户不同需求,社区以 Spring Boot 3.0 和 2.4 分别为分界线,同时维护 2022.x、2021.x、2.2.x 三个分支迭代。如果不想跨分支升级,如需使用新特性,请升级为对应分支的新版本。 为了规避相关构建过程中的依赖冲突问题,我们建议可以通过 云原生应用脚手架 进行项目创建。
783 0
SpringBoot和SpringCloud,SpringCloudAlibaba版本依赖关系
|
安全 Java 应用服务中间件
IDEA与JDK的下载安装配置
IDEA与JDK的下载安装配置
1549 0