一、代码重构
软件开发中,代码质量与其整洁度成正比,干净的代码,既在质量上可靠,也为后期维护、升级奠定了良好基础。
实际开发中,我们经常听到”重构”二字。重构既不修正错误,又不增加新的功能性。反而它是用于提高代码的可读性或者改变代码内部结构与设计,并且移除死代码,使其在将来更容易被维护。
关于重构说明,如下图所示:
二、常用的重构方法
1.封装成员变量(Encapsulate Field)
将仅限于本类使用的变量重写成私有(private)成员变量,并提供访问方法(accessor method)。这种重构方式可以将与外部调用者无关的变量隐藏起来,减少代码的耦合性,并减少意外出错的概率。
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 重构前
classSomeClass{
publicintmemberA;
...
}
// 重构后
classSomeClass{
privateintmemberA;
publicintgetMemberA();
publicvoidsetMemberA(inta);
...
}
|
2.提取方法(Extract Method)
将大段代码中的一部分提取后,构成一个新方法。这种重构可以使整段程序的结构变得更清晰,从而增加可读性。这也对函数(Function)通用。
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// 重构前
voidProcess(MyDataSet mds)
{
// Step 1 ...
intresult=0;
if(mds.isReady)
{
intdata1=mds.param[0];
intdata2=mds.param[1];
// Preprocess...
result=data1%data2;
}
// Step 2...
}
// 重构后
voidProcess(MyDataSet mds)
{
// Step 1 ...
intresult=0;
if(mds.isReady)
result=CalculateMDS(mds.param[0],mds.param[1]);
// Step 2 ...
}
intCalculateMDS(intdata1,intdata2)
{
// Preprocess...
returndata1%data2;
}
|
3.一般化类型(Generalize Type)
将多个类/函数共用的类型抽象出可以公用的基类(base class),然后利用多态性追加每个类/函数需要的特殊函数。这种重构可以让结构更加清晰,同时可以增加代码的可维护性。
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
// 重构前
classRectangle{
private:
intw,h;
public:
doubleArea(){
returnw*h;
}
}
classTriangle{
private:
intw,h;
public:
doubleArea(){
returnw*h/2;
}
}
// 重构后
classPolygon{
private:
intw,h;
public:
virtualdoubleArea()=0;
}
classRectangle:publicPolygon{
doubleArea(){
returnw*h;
}
}
classTriangle:publicPolygon{
doubleArea(){
returnw*h/2;
}
}
|
4.函数归父(Pull Up)
将方法从子类移动到父类。
5.函数归子(Push Down)
将方法从父类移动到子类。
6.方法更名(Rename Method)
方法从父类移动到子类。
示例代码:
|
// 重构前
publicdoublef(doublem,doublea);
// 重构后
publicdoublecalculateForce(doublemass,doubleacceleration);
|
分享到:
相关推荐
【摘要】本文主要探讨了设计模式在Android应用开发中的重要性,特别是在代码重构过程中的应用。随着Android系统的广泛使用和应用市场的激烈竞争,开发者面临着提升代码质量和运行效率的压力。文章指出,代码重构是...
【CSS代码重构】是优化和改进现有CSS代码的过程,旨在提高代码的可读性、可维护性和性能,同时保持原有功能不变。重构的关键在于改善代码结构,使其更符合最佳实践和设计模式,以便团队协作和长期项目的可持续发展。...
重构,简单来说,就是对现有的代码或数据库结构进行改进,以提高其性能、可读性和可维护性,而SQL重构则是针对数据库查询语句进行优化的过程。 在PWMIS系统中,SQL重构主要涉及以下几个方面: 1. **查询优化**:在...
《重构思路浅谈:最后一根稻草型时机》 重构,是软件开发过程中不可或缺的一环,旨在提升代码质量,改善系统架构,确保系统的可持续性和稳定性。本文将探讨一种特殊的重构时机——“最后一根稻草”型时机,以及重构...
” MartinFowler(重构那本书的作者)曾经写过一篇博客来讨论这个问题,他指出:把测试覆盖作为质量目标没有任何意义,而我们应该把它作为一种发现未被测试覆盖的代码的手段。 代码覆盖率的意义 分析未覆盖部分...
DBA需要定期监控系统状态,通过调整参数、优化代码和架构设计来确保数据库的最佳运行状态,满足大量用户的需求,并预防可能出现的性能瓶颈。同时,持续学习和了解最新的Oracle技术及最佳实践,是保持数据库性能...
8. **代码重构** 随着项目的发展,定期审查和重构代码以优化结构和性能是必不可少的。保持代码的简洁和模块化,可以降低维护成本。 9. **使用版本控制** 使用版本控制系统(如Git)可以跟踪代码更改,方便协作,...
当代码的缩进层次超过3层时,应考虑重构代码,避免过度嵌套。 2. **大括号的放置** C语言中,大括号的风格有多种,但K&R(Knuth & Ritchie)风格被广泛推荐。它规定开始的大括号置于行末,结束的大括号置于新行...
应用程序优化主要包括SQL查询优化、事务处理逻辑优化和代码重构。优化SQL语句可以避免全表扫描,利用索引,减少I/O操作;优化事务处理可以减少锁定冲突,提高并发性能;代码重构则可以去除不必要的计算和资源消耗,...
骆 骥 -《由"汽车问题"浅谈深度搜索的一个方面——搜索对象与策略的重要性》 毛子青 -《动态规划算法的优化技巧》 俞 玮 -《基本动态规划问题的扩展》 张一飞 -《求N!的高精度算法》 ## 2002 戴德承 -《退...
敏捷开发的设计实践还包括**重构**,在开发过程中不断改进代码结构,以保持代码的可维护性和扩展性。同时,**技术债务**的概念也是敏捷开发中的重要概念,它强调在快速交付的同时,不应忽视长期的技术积累和系统的可...
### 浅谈J2me游戏如何快速移植到Android 对于许多从事J2ME开发工作的人员而言,可能会突然间面临一个紧迫的需求:那就是将原本在J2ME平台上的游戏移植到Android平台上。乍一看,这似乎是一项庞大且复杂的工程,但...
### 浅谈Oracle数据库性能的优化 #### 一、引言 随着信息技术的快速发展和企业对数据处理需求的增加,数据库作为数据管理的核心组件,在企业的信息化建设中扮演着至关重要的角色。Oracle数据库作为全球最广泛使用...
通过学习和实践这些模式,开发者可以更好地理解和重构复杂系统,同时提高代码的可读性和可维护性。UML作为可视化工具,可以帮助团队成员更好地沟通和理解系统设计,从而促进协同开发。因此,无论是初学者还是经验...
3. **可扩展性**:随着业务需求的变化,可以通过增加新的业务层或者调整现有层来扩展系统功能,而无需大规模重构。 4. **复用性**:中间业务层的业务逻辑可以被多个表现层调用,降低了代码重复,提高了代码的复用性...
- **测试友好**:由于 mutation 是可预测且同步的,它们更容易被测试和重构。 2. commit 与 mutation: - commit 方法内部会调用 `_withCommit` 函数,设置 `_committing` 标志为 true,然后执行 mutation。这...
- 利用`INSERT INTO SELECT`语句可以简化数据转移的程序代码,提高系统设计人员和工作人员的效率,使他们能更专注于数据库设计和字段设计。 - 随着信息系统的发展,这种数据转移方法可以应用于数据库的升级、调整...