代码重构实践之复用改造

IntelliJ IDEA在Java领域的代码重构实践案例 本文旨在为Java开发者提供IntelliJ IDEA中代码重构的全面指南,从基础到高级技巧,帮助开发者理解并应用这些功能来改善代码质量。介绍代码重构的基本概念详解IntelliJ IDEA的重构功能通过实际案例展示重构过程讨论高级重构技巧和最佳实践重构(Refactoring):在不改变代码外部行为的前提下,改善代码内部结构的过程:集成开发环境,提供编码、调试、测试等功能的软件代码重构就像整理你的房间。 阅读详情

怎样识别哪些地方需要重构代码?个人觉得应该有两个层次。

第一个层次是直观感觉。例如当你看到很多相似的代码时,肯定是代码的复用没有做好,应该从加强代码复用;当你看到很多全局变量,应该是数据的隐蔽性没有做好,应该需要加强数据隐蔽性;当你看到没有使用类,而是结构体,应该需要加强类的使用频率,因为这样才会对于继承、数据保护、多态、设计模式等高阶的应用开发思想进行更大力度的重构。

第二个层次是主观分析。这个层次需要对面向对象思想和编程实践有比较充分的实践,对于经验不足的人,可能重构的效果会差异很大。但是我觉得即使这方面经验不足的人,也不能看到像一坨乱麻的代码,而无动于衷。要敢于实践,有一种对待写代码就像写制作一部工艺品一样,具有精雕细琢和锲而不舍的精神。

首先我从第一次层次的代码复用性开始。说起代码的复用性,可能大家都很熟悉,那不就是把相同的功能模块或者函数进行封装,在具有类似的处理中进行调用嘛。其实这只能是表面现象。我们一般编程实践中,都会有一个Utility的模块或者函数,这就是将公共的基础函数或者类提供给外部使用,这已经具有一定的分层思想了。

如果像我现在面临的代码,基本面向过程的代码。想要提高代码的复用性,首先要进行面向对象改造,因为面向过程的代码,其实很多都是在操作结构体内部的成员。例如:

结构体初始化--》采用赋值构造的改造

数据拷贝--》采用构造拷贝、重载赋值操作符、定义拷贝接口等进行改造

成员内存管理--》采用构造时申请内存、析构时释放内存的改造

列表成员的添加、删除、更新、查询操作--》采用类的外部接口、封装自定义的模板容器等改造

这些都是对数据管理进行的重构,但是代码的复用中,我们可能还会涉及到业务逻辑代码的复用。往往这些业务逻辑的代码比较大,但是没有关系,我们要分析业务逻辑各个子逻辑,越细越好。可以采用树形分析方法,从软件的系统、子系统、模块、子模块、类、子类、接口、私有方法层层分解,寻找相同功能子节点,合并子节点,这些剩下的“叶子”就是基础的类或者函数。

在重构过程中,会存在不断“反复”的情况。因为重构首先要保证旧功能不能收到任何“影响”,重构的力度要适当把握,否则会造成无法收拾或者废弃重来的局面。因此,重构时先尽量理解之前的代码,从最小的粒度开始,甚至为了保证不影响旧功能,可以先创建新的类,局部地、步骤地替代之前的结构体或者功能函数。并且在重构完成后,需要加强自测。

好了,这些就是我对代码复用的一些想法和实践。文章中只是提到一些思想,至于如何实践,其实是因人而异,因项目而异的。我也不想把具体的重构代码贴上来,因为这会涉及到公司的隐私,也没有必要。

下一篇,我将说说软件分层的重要性,敬请关注。

Java设计模式—工厂模式—DEMO Java设计模式中的工厂模式,MainDemo.java 是项目演示入口 立即下载

相关推荐

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 559

(精品原创)Java代码优化->代码复用与重构

引言   很多人在写代码刚开始可能会和我一样,不会去考虑重构和复用,因为一个需求给到你,也有相应的计划时间,我们更多的考虑是如何最快的实现业务,产品在催、PM在催、客户也在催。不过渐渐的会在完成一个业务时,用更优的方案来进行优化。因为你会发现,自己写的代码越简洁,自己越舒服。(PS:虽然网络一直在传言代码写的好,离职少不了,哈哈)   接下来我用一些案例,来阐明一些简单的优化方案,仅供大家参考,大...

sun 836

电路方案分析(十二)USB Type-C PD 移动电源参考设计方案

TPD8S300为USB Type-C连接器的CC1,CC2,SBU1和SBU2引脚集成了四个通道的20v短到vbus和过压保护。TPD8S300集成了八个IEC61000-4-2ESD保护通道,用于USB Type-C连接器的CC1、CC2、SBU1、SBU2、DP_T (顶侧D-) 、DM_T (顶侧D-) 、DP_B (底侧D-) 引脚。当电源组是接收器并为其自身的电池充电时,该芯片会对电池充电,而在电源模式期间,该芯片充当DC-DC转换器以生成VBUS。

小幽余生不加糖 2万+

重构,代码复用 重复代码_什么时候应该重构代码?

重构,代码复用 重复代码翻译自: https://medium.com/swlh/when-should-you-refactor-your-code-e98f3d33ff23重构,代码复用 重复代码

weixin_26752759的博客 453

VMware Ubuntu虚拟机突然断网?我用5步彻底解决了(附避坑指南)

Ubuntu虚拟机断网问题通常由网络配置冲突和VMware服务未正确绑定导致。本文提供5步解决方案:1)清理Ubuntu重复有线连接;2)重启Windows主机的VMware服务;3)检查VMware虚拟网络配置;4)重新配置Ubuntu网络参数;5)测试网络连通性。关键避坑点包括:避免多连接共存、修改配置后必重启服务、确保虚拟网卡绑定主机。通过"网卡状态→IP/路由→网关→服务"的排查思路,可快速解决虚拟机网络故障。文末附有详细的故障症状对照表,便于快速定位问题。

m0_58530495的博客 626

【虚幻引擎UE】UE5 仅需6步轻松实现关卡顺滑切换

【虚幻引擎UE】UE5 仅需6步轻松实现关卡切换

灵境引路人 2万+

代码重构 复用+扩展

提升代码复用性

u014374173的博客 564

【ComfyUI】【Nunchaku】【diffusers报错解决】秋叶整合包安装 Nunchaku 报错的解决方法

最近在折腾 AI 绘图时,我尝试在秋叶的 ComfyUI 整合包中安装 `ComfyUI-nunchaku` 插件(版本 0.3.3),结果启动后直接报错,提示无法从 `accelerate.utils.memory` 中导入 `clear_device_cache`,让我一度怀疑插件是否兼容。查阅了一堆 issue 和源码之后,总算找到了原因和解决方法。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1852

重构-改善既有代码的设计(十三):重构、复用与现实

1、现实的检验 (1)重构的潜在因素:在编写代码时对自己所做的事情没有完整的了解,并且受到生产进度的压力 (2)重构被用于开发框架、抽取可复用组件、使软件架构更清晰、使新功能的增加更容易 (3)重构可以帮助你充分利用以前的投资,减少重复劳动,使程序更简洁有力 (4)重构时,你必须找出待重构的这一部分程序被什么地方引用 2、为什么开发者不愿意重构它们的程序 (1)不知道如何重构 (2)...

东晨雨的博客 374

全面解析智能座舱芯片参数:高通 (SA8295)vs 联发科,真实案例一行行讲给你听!

使用场景推荐芯片中低端车型 + 1屏导航语音SA8155P / MT8628(性价比高)中控+副驾+仪表+全景影像SA8255P / MT8678(性能强)高阶自动驾驶+域控融合SA8295P(顶级安全+算力)

weixin_43199439的博客 2076

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

平台:基本常用平台包括安卓,苹果(max和IOS),Windows64,Linux都行。10. 注意,如果从移动设备浏览器连接服务,信令服务器的SSL证书一定要先设好。想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方法和实例。8. 打开电脑浏览器,地址栏输入http://127.0.0.1,点击Receiver Sample。新建Unity项目,模板选Third Person,Project Name随意。启动App,控制台出现如下信息表示成功。

每日出拳老爷子的博客 2518

设计模式应用(一)——模板方法改造项目代码

从模板方法提取优化代码的原则——抽同隔变,给你一个优化代码的思路

shang_0122的博客 528

视觉-语言模型:BLIP与Flamingo如何理解图文?

视觉-语言模型:BLIP与Flamingo如何理解图文? ,人工智能,计算机视觉,大模型,AI,在当今人工智能飞速发展的时代,视觉 - 语言模型作为多模态领域的关键技术,正逐渐改变着我们与数字世界交互的方式。它们致力于打破图像与文本之间的模态壁垒,使计算机能够像人类一样,综合理解和处理视觉与语言信息。其中,BLIP 和 Flamingo 两款模型脱颖而出,以独特的架构和创新的训练方法,在图像描述生成、视觉问答、图文检索等任务中展现出卓越的性能。本文将深入剖析 BLIP 与 Flamingo 模型的工作原理。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

RuoYi-Vue3前端工程化实践:Monorepo架构改造探索

在企业级中后台系统开发过程中,随着业务复杂度提升,RuoYi-Vue3原有的单体架构逐渐暴露出以下问题: ### 1.1 代码组织困境 - **模块耦合严重**:所有业务逻辑集中在`src/views`目录,权限管理、系统监控、代码生成等模块相互交织 - **复用成本高**:通用组件如`Pagination`、`FileUpload`等虽集中在`src/components`,但跨项目复用需手动...

gitblog_00777的博客 851

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MCP代码重构完整指南:10个提升可维护性的实战技巧

Model Context Protocol (MCP) 作为AI应用开发的新兴标准,其代码质量直接影响项目的长期可维护性。本文将为您揭示MCP项目代码重构的核心策略,帮助您构建更加健壮、易于维护的AI应用架构。 ## 🔧 MCP代码重构的重要性 MCP协议旨在标准化AI模型与工具服务之间的通信,但在实际开发中,代码往往随着功能增加而变得复杂。通过系统性的重构,您可以显著提升代码的可读性、可

gitblog_00906的博客 903

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SwiftGen模板的重构工具:自动化模板改进与优化

SwiftGen作为iOS/macOS开发中的代码生成工具,其模板系统直接影响开发效率与代码质量。本文将系统介绍如何利用SwiftGen内置工具链实现模板的自动化重构与优化,解决版本迁移中的兼容性问题,提升模板复用率与维护性。 ## 模板系统架构与版本演进 SwiftGen的模板系统采用Stencil模板引擎,通过结构化目录组织不同类型资源的代码生成逻辑。核心模板目录位于[Sources/Sw...

gitblog_00083的博客 785

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

小米2016技术重构实战:架构优化与性能提升案例解析

技术重构是软件开发过程中应对系统老化、性能瓶颈和团队协作效率低下的关键手段。其核心原理在于通过模块化设计、代码规范统一和持续集成流程,系统性解决技术债务累积问题。在工程实践中,重构的价值体现在提升代码质量、优化系统性能和加速开发迭代。常见应用场景包括大型互联网公司的系统架构升级、移动应用性能优化以及团队开发流程改进。以小米2016年的技术转型为例,该公司通过模块化架构调整和性能监控体系重建,成功解决了MIUI系统卡顿、编译时间过长等具体问题。这一案例生动展示了如何通过渐进式重构策略,在保证业务连续性的同时实

weixin_34082695的博客 329

高复用性自动化脚本设计实践

理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。

京东科技开发者 259

HarmonyOS NEXT 企业级记账APP:公共组件与工具类重构

掌握核心概念与实施步骤落地完整代码与配置集成既有架构与组件处理边界情况与最佳实践完成验证与 Git 提交企业级核心原则:遵循统一规范、保证可运行、追求可维护。参考HarmonyOS NEXT 开发者文档了解官方约定。需求项说明核心功能全局重构公共组件库与工具类,抽离通用逻辑,统一命名规范,清理冗余代码,提升复用性。影响范围全项目或特定模块实施步骤设计→封装→集成→验证验收标准编译通过 + 运行正常 + 体验提升。

2601_96191042的博客 219

从select到epoll:手把手教你改造老旧IO多路复用代码(附性能测试)

本文通过实战案例,详细指导如何将基于select的老旧I/O多路复用服务器代码重构为高性能的epoll架构。文章剖析了select的O(n)遍历、描述符限制等性能瓶颈,并逐步演示了如何使用epoll_create、epoll_ctl等核心API进行代码迁移,最终通过压测数据对比,展示了epoll在高并发场景下带来的显著性能提升与系统稳定性飞跃。

weixin_29306261的博客 202

毕业设计代码下载:新手如何安全高效地复用开源项目?

最近在帮学弟学妹们看毕业设计,发现一个挺普遍的现象:大家为了赶进度,常常会直接去网上搜索“毕业设计代码下载”,找到一个看起来差不多的项目就拿来用。结果呢,要么是环境死活配不起来,要么是跑起来一堆报错,更糟的是可能不知不觉引入了安全漏洞,答辩的时候被老师问得哑口无言。其实,复用开源项目是个高效的学习和开发方式,但“拿来就用”风险很大。今天我就结合自己的经验,聊聊新手如何安全、高效地“下载”并复用这些毕业设计级别的开源代码,让它真正为你所用,而不是给你“挖坑”。

2600_94959846的博客 330

重构代码之美

什么是重构; 为什么要重构; 什么时候重构; 怎样避免重构的现象; 重构的难点在哪里; 如何来实施代码重构; 重构如何灵活的使用设计模式(实战演练中讲解); 重构时错误的设计模式使用范例(实战演练中讲解); 实战演练(含代码讲述)。 ###什么是重构? 代码优化; 重构就是通过调整程序代码,再不改变其功能基础之上,改善代码的可读性,提高代码的可扩展性。 为什么要重构? 基本上我们开发的时候,产品天天改需求,而且每次改动的需求可能会导致很多的代码实现要重新修改,没办法我们只能继续安静的去分析需求,很多.

luckSheep的博客 836

Rnote代码重构案例:提升模块复用性的实践

在Rnote项目开发过程中,随着功能迭代,构建器(Builder)和笔画(Stroke)模块逐渐暴露出严重的代码复用问题。以图形构建器为例,ArrowBuilder、LineBuilder、EllipseBuilder等18个构建器实现了几乎相同的事件处理逻辑,却各自维护独立代码。这种"复制-粘贴"式开发导致: 1. **维护成本激增**:新增约束功能需修改所有构建器 2. **bug扩散风险*...

gitblog_01118的博客 897

重构技巧:提升现有代码复用性的方法

在软件开发中,“重复代码”就像厨房里的烂菜叶——看似不影响做饭,却会让整个系统散发“腐烂味”:修改一个功能要改10处代码、新增需求时找不到该复制哪段逻辑、团队协作时因代码重复导致冲突频发……本文聚焦“如何通过重构提升代码复用性”,覆盖从“识别重复代码”到“设计可复用模块”的全流程方法,适用于Web开发、后端服务、工具类库等多种场景。本文将按照“问题引入→核心概念→重构技巧→实战案例→工具推荐”的逻辑展开。先通过一个真实故事引出代码复用性的重要性,再拆解6大核心重构技巧,最后用实战案例演示如何落地。

软件工程实践的博客 1420

Rnote代码重构案例:提升模块复用性的终极实践指南

Rnote作为一款专注于手写笔记和草图绘制的开源项目,通过代码重构显著提升了模块复用性,本文将深入剖析其背后的技术实践与架构优化策略。 ## 模块化架构设计:从混沌到清晰 Rnote项目采用Rust语言开发,通过精心设计的模块结构实现了高度解耦。项目核心分为四个主要 crate: - **rnote-cli**:命令行工具模块 - **rnote-compose**:图形元素构建模块 - *

gitblog_01044的博客 390

聊一聊代码重构——关于变量的代码实践

当一个表达式被赋值给一个变量后,在后续使用的时候,如果这段逻辑参与了后续的代码业务时,可以使用变量来替代,从而提高了代码复用程度。除了这种情况以外,有些时候变量完成初始化后,在后来的某处代码中会对变量再次进行了赋值,这种赋值有时候代表着变量的职责或者当时的数据状态发生了变化。虽然看起来变量增多了,但是在后续调用的时候可以清晰的理解,这两个变量内容是不一致的,而不至于调用的时候产生混乱。在上面例子中,除了可以将变量封装在对象中使用,部分基于变量的表达式,也可以作为对象自身的特性,作为对象的内部方法进行实现。

大风的博客 864
上一篇: 代码重构实践之背景
下一篇: 代码重构实践之分层重要性
pstrunner
博客等级 码龄19年 50粉丝 52原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值