Delphi2007的重构功能

Delphi XE引入了重构工具,包括重命名、自动声明、提取方法等功能,极大提升了开发效率。尽管某些功能如修改参数和查找单元可能存在不足,但整体上重构功能为代码质量提升提供了便利。建议开发者阅读《重构》以深入了解如何改善代码结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Delphi2007以后发现在IDE中集成了重构的工具,基本覆盖了重构所需要的处理。


[步骤]

[功能]

  [说明]

Move

移动

1、将选定的静态函数从一个类移动到另一个类
2、将选中的类或接口移动到其他单元

Extract Interface

抽取接口

将选定的函数抽取到一个新的接口

Extract Superclass

抽取基类

将选定的函数、属性、字段从一个类里抽取到一个基类中

Pull Member Up

将成员向上拉

1、将子类中的函数或字段移动到父类
2、将子接口中的函数移动到父接口

Push Members Down

将成员向下推

1、将父类中的字段或者函数移动到子类
2、将父接口中的函数移动到子接口

Safe Delete

安全删除

在确认没有其他代码调用的情况下,删除所选定的变量、组件、类或接口

Inline Variable

逆转变量

将变量取消,并用初始化时设置的常量替代

Introduce Field

引入字段

将选中的变量、字段或常量用新的字段替换

Introduce Variable

引入变量

将所选择的变量、字段或常量用新的变量替换

Rename

改名

1、修改组件的名字
2、修改类、接口的名字
3、修改变量的名字

Declare Variable

定义变量

将选中的变量名定义成变量

Declare Field

定义字段

将选中的变量定义为类的字段

Extract Method

抽取方法

1、将选中的代码块包装成独立的方法
2、在改代码块原来的位置调用这个方法
3、根据需要自动生成方法的参数表
4、根据需要自动调整新方法和源方法的内部变量

Extract resource string

抽取资源串

将选中的字符串定义为资源串,在原来的位置直接调用资源串(全局常量)

Change Params

修改参数

1、修改所选定函数的参数表
2、将所有调用到这个函数的地方都修改到适应新的参数表

Find Unit

寻找单元

1、查找所选定的变量或类型所属的单元
2、将这个单元添加到引用中



如果要我只选一个升级到XE的原因,我会选重构。对用惯D7的朋友,这确实是一个非常实用的新功能,但如果你用过Visual Studio,就会发现微软早就实现了类似的功能。让人困惑的是,XE的重构子菜单有一长串,很多菜单很难直观地想像出其功能。别担心,这些都是给建模用的(比如把某个类方法转移到另外一个类),你常用到的只有几个,仔细的你会发现其实就是设了快捷键的那几个。


1. Rename: 包括重命名变量,函数名,组件名等等。好处是它会把整个项目里所有引用的地方都自动修改!经常碰到名字起的不好或者不一致的,想要修改又嫌麻烦,现在省事多了。

2. Declare Variable,Declare Field: 自动声明,举个例子: for i:=0 to TmpList.Count-1 do begin ...end; 如果变量i没有声明,可以用这个功能加个声明。麻烦的是会弹出对话框让自己选变量类型,并没有节省太多时间

3. Extract Method: 提取方法。这个也很实用,举个例子:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Caption := 'This is a Test';
  Button1.Enabled := false;
end;

我们经常会在form的create事件里做很多的初始化操作,有时候发现这些初始化操作需要重复执行,选中要提取的代码,选择Extract Method,指定方法名为InitScreen,如下:


procedure TForm1.FormCreate(Sender: TObject);
begin
  InitScreen;
end;

procedure TForm1.InitScreen;
begin
  Form1.Caption := 'This is a Test';
  Button1.Enabled := false;
end;

如果提取的代码中引用了本地变量,会自动给新方法加上引用声明。不过,如果提取的代码过于复杂的时候有时会出错,需要自己手工修改。

4. Extract Resource String: 把一个字符串声明称resourcestring类型的常量,目前没发现有什么用处

5. Change Params: 修改函数参数,很不实用的功能

6. Find Unit: 查找类所在的单元,这个功能本来应该很有用,比如你在网上拷贝了一段代码,结果编译提示你找不到某个类型,用这个功能,输入类名,就可以告诉你在哪个单元里,并自动加到Interface或者implementation区域。可是,在实际使用的过程中,先是打开特别慢,我ssd的硬盘都要转半天,似乎每次都重新索引。其次就是有时有些类明明有就是找不到,目前也不清楚怎么回事。可惜这么好的一个功能变鸡肋,不知道XE2中有没有改进。


以上就是XE中常用到的几个和重构相关的功能,其实重构本身远不止这些,工具能实现的只是很小的一部分而已。推荐大家读一读《重构》这本书,搞清楚什么是代码里的Bad Smell,对提高代码质量非常的有帮助。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值