2017-09-27 132 views
0

我有这样的代码如下:重构 - 自动提取方法的功能

procedure T.Foo; 
var 
    bar: Integer; 
    bar2: String; 
begin 
    bar := Abs((Round(1.2) + 17) * -1); 
    bar2 := IntToStr(bar); 
end; 

我想用“提取方法”提取功能(按Ctrl + Shift + M)的代码看起来像:

function T.ExtractedMethod: Integer; 
begin 
    result := Abs((Round(1.2) + 17) * -1); 
end; 

procedure T.Foo; 
var 
    bar: Integer; 
    bar2: String; 
begin 
    bar := ExtractedMethod; 
    bar2 := IntToStr(bar); 
end; 

不幸的是,当我选择行:

bar := Abs((Round(1.2) + 17) * -1); //Ctrl+Shift+M on this line 

它提出了使用var参数的过程:

procedure T.ExtractedMethod(var bar: Integer); 
begin 
    bar := Abs((Round(1.2) + 17) * -1); 
end; 

是否有机会强制使用函数?

+3

不,不幸的不是。 *提取方法*仅生成var params的过程。是我想要改变多年的东西。 –

回答

3

不,Delphi中的提取方法重构总是会创建过程。