《重构2》第六章-重构基础

简介: 《重构2》第六章-重构基础

重构的方法有很多,这一张是最简单、最容易理解、最快捷的重构!

1.提炼函数、内联函数

两个方法,放在一起讲述
提炼函数,显而易见,重复的,且只有少数可控变量的函数,为什么不提炼出来?记得,当你使用一个函数第三次的时候好,不要再拷贝粘贴了,去提炼函数吧
内联函数:可以理解为,当你的多函数调用时,其中某个函数B中逻辑及其简单,且上级函数A没有太多逻辑,就可以使用内联函数,注释B函数,将其逻辑放到A函数中.一个明显的特点就是,代码的执行逻辑更加清晰可见!!!

2.提炼变量、内联变量

同类/反类重构方法统一位置解释
提炼变量:当个计算逻辑或者层级拆分需要再函数的多重地方使用,就可以将其提炼为变量,好处如下
好处:
1.有好的命名,逻辑清晰
2.分解了表达式,便于管理及开发

内联变量:在函数内部,变量命名并没有给很好的表现力,或者妨碍代码阅读,可以考虑使用内联变量,减少变量的使用

3.改变函数声明

有效的函数名称,可以很好的改变对代码的理解速率,对协同开发,十分有效
但,当改变函数声明时,请注意以下几点:
1.确定改变函数声明后,修改代码中所有的引用点
2.注意函数入参,是否有不同
3.测试相关功能~~~(你不能确保,你真的修改对了函数入参)

4. 封装变量、变量改名

在重构过程中,尤其是重构函数时,入参的排列顺序及注释会产生很大的误解,所以为了重构的方便性,以及管理入参,可以考虑使用封装变量的方法
或者,当可变数据超出当前作用域的时候,就可以将其封装
封装变量:将函数中多个入参,封装为一个对象
变量改名:有效且符合场景的名称,可以让那个代码更加便于阅读,同时,也可以通过深拷贝,拿出干净的数据

5.引入参数变量

这个我并不很安利

6.函数组合成类、函数组合成变换

函数组合成类:首先,将共同类的函数组合到同一个类中,便于后期使用调用,相关模块内容;其次可以以少量的初始化数据,进行初始化类,同时,类内函数互相调用,可以较少入参的传输;
函数组合成变换:很好理解,就是将数据的深拷贝,且拷贝后的部分同样的数据处理放到一个专门的类中

7.拆分函数

庞大的逻辑,不要想了,拆吧!!!!想想一个函数300行,可怕啊😨

目录
相关文章
|
JavaScript 前端开发 PHP
【Vue+NodeJS】vue路由及NodeJS环境搭建(Windows版)
Node.js是一个基于Chrome V8引擎构建的JavaScript运行时环境使用了一个事件驱动、非阻塞式I/O 的模型;可以让JavaScript在服务器端运行,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。相对于传统的JavaScript运行环境(如浏览器),Node.js具有以下特点:事件驱动:Node.js使用事件驱动的非阻塞I/O模型,使得在处理大量并发请求时效率更高。单线程。
|
新能源 图形学
一次大一新生打化工设计大赛的经历(附参赛过程、方法)
一次大一新生打化工设计大赛的经历(附参赛过程、方法)
708 1
|
资源调度 jenkins 持续交付
jenkins 自动安装nodejs16.16.0版本报错处理
jenkins 自动安装nodejs16.16.0版本报错处理
1088 0
|
6月前
|
人工智能 自然语言处理 开发工具
HarmonyOS NEXT~鸿蒙开发能力:HarmonyOS SDK AI 全解析
本文深入解析HarmonyOS SDK中的AI功能集,涵盖分布式AI引擎、核心组件(NLP、计算机视觉等)及智能决策能力。通过代码示例与开发实践指南,帮助开发者掌握环境配置、性能调优及多场景应用(智能家居、移动办公等)。同时探讨性能优化策略与未来演进方向,助力构建高效分布式智能应用。
710 9
|
6月前
|
Ubuntu 安全 Linux
CentOS与Ubuntu中防火墙配置命令集汇
有了这些,你就能遨游在 CentOS 和 Ubuntu 的海洋中,频繁地改变你的防火墙设置,快速地应对各种安全威胁,同时也能保证你的系统可以正常工作。出发吧,勇敢的编程者,随着这些命令集的涌动,扬帆起航,走向安全的网络世界!
220 5
|
并行计算 固态存储 Ubuntu
基因组大数据计算: CPU和GPU加速方案深度评测
基因组大数据计算: CPU和GPU加速方案深度评测
551 0
基因组大数据计算: CPU和GPU加速方案深度评测
|
9月前
|
人工智能 自然语言处理 API
销售易NeoCRM与Salesforce:优势特色大比拼
本文对比了销售易NeoCRM与Salesforce两款CRM系统。销售易NeoCRM功能涵盖销售、客户、营销管理等,具AI赋能和移动办公优势,界面现代化,价格灵活适合中小企业;Salesforce功能全面,AI平台强大,生态系统丰富,全球化支持出色,适合大型及跨国企业。两者各有优劣,企业应根据自身需求选择合适的CRM系统,以实现高效管理和业务增长。
|
11月前
|
安全 数据挖掘 数据安全/隐私保护
国产CRM品牌巡礼:系统品牌的核心优势与特色
本文深度解析国产CRM系统的四大知名品牌:销售易、神州云动、销帮帮和天衣云。 销售易:中国领先的CRM解决方案提供商,提供全渠道获客、智能化销售流程及AIGC技术应用,赢得500强企业信赖。 神州云动:以PaaS+SaaS模式、灵活定制和行业解决方案著称,支持企业实现客户关系管理的数字化和智能化。 销帮帮:面向中小企业的实用型CRM系统,提供销售跟踪、客户视图等功能,提高销售效率和客户满意度。 天衣云:专注于云端部署,提供快速部署、高安全性的CRM解决方案,确保企业信息安全。 各品牌各有特色,企业应根据自身需求选择合适的CRM系统,以实现客户关系的全面管理,提升业务效率和客户满意度。
|
安全 Java Go
Go语言有哪些优势
【10月更文挑战第10天】Go语言有哪些优势
419 0
|
编译器 C++
Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案
Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案
830 0
Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案