代码重构
文章平均质量分 62
重构是一门技术活,是程序员必修的内功之一。
Anbang713
这个作者很懒,什么都没留下…
展开
-
重构:提炼方法
提炼方法顾名思义是将一个代码片段提炼出来放在一个独立的方法中。提炼方法是重构手段中最简单也是最常用的一个手段,我自己在重构一段代码中,很多时候第一件事就是提炼方法。那么该怎么使用这个手段呢,什么情况下需要使用这个手段。很多人可能也都知道,当一个方法较长时,就可以提炼方法来保证每个方法都足够的精短;当一个代码片段被多个地方使用时,考虑到代码复用,我们就可以将其提炼出来。这两种情况都没有错,但我认为最合理的一个观点是:提炼方法,以将意图与实现分开。如果你需要花时间浏览一段代码才弄清它到底在干什么,那么就应该将原创 2021-03-08 21:45:25 · 441 阅读 · 0 评论 -
重构:遇到多个参数初始化时可考虑建造者模式
前面我们提到使用静态工厂方法代替构造方法,因为静态工厂相对于构造方法有诸多个优势。但静态工厂和构造方法有一个共同的局限性:它们都不能很好地扩展到大量的可选参数。比如我们有一个用于描述字段属性的类,一个字段通常包含:字段名、字段标题、字段是否可见、字段是否必填等等属性,其中字段名、字段标题是必填的,其它都是非必填。对于这样的类,我们应该怎么设计它。通常来说,大部分的开发者都会想到使用重载的方式来提供几个可能的构造方法保证客户端可以快速的创建出这样的一个字段对象出来。比如这样:public class Fi原创 2021-01-07 21:01:17 · 281 阅读 · 0 评论 -
重构:用静态工厂方法代替构造方法
对于类而言,为了让客户端获取它自身的一个实例,最传统的方法就是提供构造方法。除此之外,我们今天将介绍的静态工厂方法也是被用得很广泛的一种方式。比如Boolean源码中将boolean基本类型值转换成一个Boolean对象引用:public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE);}如果不通过公有的构造方法,或者说除了公有的构造方法之外,类还可以给它的客户端提供静态工厂方法。提供静态工厂方法而不是公有的构造方法原创 2020-12-31 19:31:41 · 230 阅读 · 0 评论 -
重构:不可变对象
1. 什么是不可变对象不可变对象也称之为值对象,《Effective Java》一书中给出这样的定义:不可变对象是指每个对象中包含的所有信息都必须在创建该对象时提供,并在对象的整个生命周期内固定不变。比如下面这段代码:public class ImmutableObject { private int value; public ImmutableObject(int value) { this.value = value; } public int getValue() {原创 2020-12-19 09:43:29 · 199 阅读 · 1 评论 -
重构:给“娃”起个好名字吧
回想一下,我们平时写代码过程中,做得最多一件事是什么?创建一个类,我们要给类起一个名字;创建一个方法,我们要给方法起一个名字;创建一个变量,我们要给变量起一个名字。可想而知,我们无时无刻都在命名,所以我们重构的第一招就是给“娃”起个好名字。但是也有人会问了:不好、一般或者好的命名对代码编译、运行并没有影响,为什么要花把时间浪费在这个无意义的事上。话虽如此,但实际上一个好的命名是整洁编程的核心。写出来的代码在大部分的情况下,是给人看的,我们应该追求写出人能够读懂而不是仅机器能够读懂的代码。在我还没有太多编程原创 2020-12-12 08:57:23 · 249 阅读 · 0 评论 -
重构:开篇
作为《重构计划》的开篇,今天我们一起来探讨关于重构的一些理论,然后我们在后面再介绍一系列的重构手段。1. 什么是重构百度百科给出重构的定义:重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。先说我的结论,对于百度百科的这个定义,个人认为还不够严谨。首先,重构的前提是在不改变当前代码的业务逻辑下对代码内部结构进行调整;其次,重构的结果并不一定在性能上有很大的提高,相反,有些重构可能还会比重构前的代码性能更低一点。但总体来说,重构的目的是在不改变代原创 2020-12-05 09:17:32 · 242 阅读 · 0 评论