重构心法——分解大函数

不论什么系统,采用什么架构,都应该从“分解大函数”开始,这样做准没错!

分解大函数前的准备

梳理大函数逻辑:认真阅读大函数的源码,添加必要的注释,调整不合理的代码顺序,将代码分段,将前后有明显关系的代码放在一起。

分解大函数实质

其实就是“抽取方法”,将被我们分段、加注释的代码从原函数里边抽取出来,放在一个新的独立的函数中。抽取方法就像“核裂变”,开始由一个大函数裂变为几个函数,这些函数又分别裂变为新的函数,当这些裂变出来的方法越来越多时,后期可以考虑是否要抽取新的功能类。

抽取方法尺度

在抽取方法时,不论你是抽了几行还是上百行,这些代码一定是功能内聚的,说白了就是要执行一个清晰的功能。

抽取秘诀

1.为新方法起一个易懂的名字

2.参数和返回值如有必要最好封装为对象

3.代码重复的地方是抽取函数的重要标志

4.if、for、try等语句块均要留意方法的抽取

备注

别忘了单元测试!!!

时间: 2024-08-02 20:35:47

重构心法——分解大函数的相关文章

重构心法——拆分大对象

大对象演化过程: 在很多遗留的系统中,当我们将数千行的大函数分解成数十个小函数时,却出现了另一个问题,就是这些小函数在类中杂乱无章地放着,使得这个类成为功能无所不包的超级类,功能极度耦合,稍作修改就可能踩坑,引入一些Bug. 大对象拆分方法 拆分大对象的方法就是“抽取类”:过程其实非常简单,就是将原对象中的某些方法移动到其他“合适的”对象中(新建或已存在),以构建高内聚体耦合的软件系统. 大对象拆分原则 1.按职责驱动拆分 所谓职责驱动,就是说我们设计的类和接口一定是围绕“某个具体的职责”来进行

大话重构连载16:超级大函数

事情总是这样的:当我们对一个遗留系统一忍再忍,再忍,忍,还要忍--终于积攒到某一天,实在忍无可忍了,拍案而起,不能再忍了,重构!!!事情就这样发生了.然而,在这时你突然发现,重构的工作千头万绪,真不知从何开始.堆积如山的问题此起彼伏,期望修改的设计思绪万千.这里有个想法,那里有个思路,什么都想做,却什么都做不了,真是脑子里一团乱麻.这时候,没有一个合理的步骤,清晰的计划,瞎干蛮干是十分危险的,它会为你的重构带来不可预期的未来.无数次的经验告诉我,不论是什么系统,采用什么架构,从分解大函数开始,肯

重构笔记——分解临时变量

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42463871         在上一篇文章中介绍了"重构笔记--引入解释性变量".本文将介绍"分解临时变量"这种重构手法.         下面让我们来学习这种重构手法吧. 开门见山         发现:你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果. 解决:针对每次赋值,创造一个独立.对应的

重构笔记——搬移函数

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42679983         我们都知道,类往往因为承担过多的责任而变得臃肿不堪.这种情况下,一般会使用"提炼类"这种手法将一部分责任分离出去.如果一个类变得"不负责任",一般会使用"内联类"这种手法将它融入另一个类.如果一个类使用了另一个类,一般会运用"隐藏委托关系"手法将这种关系隐藏

重构笔记——内联函数

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42261333         在上一篇文章中介绍了"提炼函数".本文将介绍"内联函数"这种重构手法.         下面让我们一起来学习该重构手法把. 开门见山         发现:一个函数的本体与名称同样清楚易懂. 解决:在函数调用点插入函数本体,然后移除该函数. //重构前 public int getRati

大话重构4:大布局与小步快跑

以往我们在重新设计一个系统时,总是喜欢大布局.全面地整理系统需求,全面地分析系统功能,再全面地设计系统.开发.测试.这样一个过程往往会持续数月,花费大量的工作量.但是,不到最后设计出来,谁都不知道会不会存在问题.这就是"大布局"的弊病. 正因为如此,软件大师在讲述系统重构时总是强调,系统重构应当避免大设计,而应当尽量采用一个一个连续不断的小设计.这就是我们所说的"小步快跑"的设计模式. 小步快跑体现出了敏捷软件开发的特点--简单与快速反馈.不要想得太多了,活在今天的

试除法分解大整数

写在前面: 这篇博客是我在[?]对 算术基本定理 的研究 中的一部分 试除法分解大整数 每次筛出一个素数p[i],看看其是否为要分解的正整数n的真因子 如果是的话,就除去n中所有的p[i] 是一种很朴素的试除的思想,时间复杂度很大 原文地址:https://www.cnblogs.com/Antigonae/p/10247634.html

重构心法——提高代码复用率

由于现在的互联网企业业务比较繁忙,导致产品狗不停地提需求,还总是改来改去,最后留给程序猿的时间少之又少.程序猿也不是吃素的,干脆直接copy一下代码随便搞一下实现功能就行,也谈不上所谓的精心设计了.这样的确是缩短了开发的时间,但是到处都是重复代码,大大提高了软件维护的成本,为日后软件的发展带来了隐患.如果同一功能被复制粘贴了上百次,一旦这段代码需要变更时,那简直就是一种灾难,改了这边却忘了改那边.同一段代码,当你Copy第一次的时候也许还能容忍,但是第二次的时候,你应该停下来思考一下了,这是一种

【重构学习】05 函数的重构

<重构>这本书的代码都是java,我准备用C#来一遍. 而今天我的主要任务是写一大段垃圾代码出来,然后重构(仅限于函数的,不涉及到其它方面的重构). 程序界面: 功能介绍: 侠客名字自己取,然后点击按钮随机角色的属性, 根骨,经脉,柔韧,悟性等四项属性值都是随机而来. 其他的都是由这四个属性计算而来: 根骨:影响气血,基础外攻和基础内攻 经脉:影响内力和基础内攻 柔韧:影响身法和基础闪避 按钮功能的垃圾代码如下: /// <summary> /// 产生侠客 /// </su