当前位置: 首页 > 后端技术 > PHP

重构:你可能不知道的重构场景

时间:2023-03-29 20:20:33 PHP

什么是重构?“重构”这个词你肯定看腻了,就是整理代码,不不不不,重构的目的是在不改变调用者行为的情况下调整优化内部逻辑,提高其理解力,降低其修改成本,它是一门艺术,是程序员的至高无上的荣耀……什么时候重构?如何重构?我经常听到周围人抱怨没有时间进行重构。重构不是留出时间专心处理,而是当你要做某个功能的时候,把需要重构的地方安排一下。逻辑重复重复代码是最常见的预警信息。如果有两个或多个重复的逻辑,你应该考虑合并它们。例如,同一个类或不同类中的函数有部分相同的逻辑,相同的部分应该抽象为独立的函数或类。longfunctions应该有很多同学处理过几百行甚至几千行代码,让人怀疑人生。为了便于理解,最好的办法是将长函数分解成若干个小函数,并用通俗易懂的函数名,让代码像自然语言一样被理解。参数太多有一个很不好的习惯,就是把要用的变量全部作为函数的参数,这样会增加代码的理解难度,扩展起来极其困难。当需要更多数据时,必须修改所有函数的参数。伸展你的整个身体。如果使用对象作为参数,将需要的数据全部放入对象中,可以有效解决参数过长的问题。函数出轨如果你发现某个函数频繁调用某个类,很有可能给你戴绿帽子,不如依依不舍,让它自由自在,将函数合并到它喜欢的类中,说不定就是更适合他们一起生活,你一定会找到一个合适的。变化的扩散如果增加一个新的业务类型(如支付通道、数据库类型等),需要修改很多地方,这意味着还有改进的空间。可以将变化的原因提取为一个配置,将变化的功能放在一个类中,这样不仅可以修改一个地方来应对变化,而且可以清楚地知道哪些功能会受到影响。工具助手是一门包含很多基本类型和内置函数的语言,但它并不能满足所有需求,比如金额单位转换、时间数组格式转换、UUID生成等简单易被忽略的小功能。如果这些功能频繁出现,规则的改变会带来一系列的修改。这时候可以考虑把这些小功能抽象成工具函数,把这些函数组合成工具类。脏话函数有一些逻辑,以后会有一些变化,所以装了很多钩子函数来处理不必要的特殊情况,往往会增加系统的复杂度和理解成本。如果安装的钩子能用并且有价值,那就用吧,否则不要放在代码里挡住视线。开关太多如果要搭建一个支持微信、支付宝、招商银行等渠道的支付平台,就需要对接不同的渠道。因为不同的通道有不同的连接方式,所以需要用一个开关根据类型选择对应通道的连接方式,但是很多地方可能会用到这个开关。一旦添加了新频道,我们将在全球范围内搜索使用该交换机的地方。switch语句可以移植成一个独立的函数,而这些函数由一个基类组成,case语句调用子类的相应函数,具体实现由子类完成,从而实现对支付通道只需要修改一个类。冗余类创建的每个类都有其他人的理解成本。如果某个变化添加的类在实际场景中没有发生变化,则移除该类。让我们需要真正有价值且理解成本低的系统。混淆变量一个类会为特殊情况设置一些变量。这些变量可能不会全部使用。处理你的代码的人必须猜测当时设置这些变量的目的。这是非常混乱的。最好将这些变量与相关函数单独放在一个类中,屏蔽具体细节,将需要的功能通过函数来??表达,这样会使得函数扩展更加高效。鬼班项目中偶尔会出现一些“鬼班”。这些类不做任何实际工作,而是负责调用其他类。最好去掉这个“中间人”,让实际要调用的类与调用者有关系。相似类如果两个类的功能相同但名称不同,可以通过修改名称或移植功能的方式使这两个相似类保持一致,然后从基类中抽象出这两个类,以便扩展。注释过多注释太多并不是坏事,它是重构的龙头,当你觉得需要为某段代码写注释时,说明你认为这段代码不容易被理解被别人,也从侧面证明这是重构的预警信号,所以当你要写注释的时候,先重构,尽量让注释多余。如果喜欢本文,可以关注微信公众号“关爱程序员社区”(icoder_club),更多干货