delphi2010中的错误行为/错误"提取方法"

Clo*_*ble 7 delphi refactoring delphi-2010

当我尝试在if语句中提取一个方法时,我正面临这个问题.我无法找到任何报告的错误.

procedure TForm1.BitBtn3Click(Sender: TObject);
var
  x: integer;
  b: boolean;
begin
  if true then
    x := 8    //********************** i try to extract this line
  else
    x := 6;

  showmessage(inttostr(x));
end;
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

procedure TForm1.BitBtn3Click(Sender: TObject);
var
  x: integer;
  b: boolean;
begin
  if true then
    newMethode
  else
    x := 6;

  showmessage(inttostr(x));
end;
Run Code Online (Sandbox Code Playgroud)

而新的Methode是:

procedure TForm1.newMethode;
var
  x: Integer;
begin
  x := 8;
end;
Run Code Online (Sandbox Code Playgroud)

任何人都可以检查Delphi XE上的行为是什么?有谁知道是否有报道?

Jer*_*ers 4

这是“Extract Method”重构中的一个错误。

作为替代方案,您可能希望使用ModelMaker Code Explorer重构工具中的“提取方法”重构。它的价格为 99 欧元,是一款相对便宜的工具,可以从 Delphi 5 开始使用,最近的 9.0.5 更新极大地改进了提取方法重构,以至于我已经有一段时间没有使用 Delphi 内置工具了。

两大好处:

  • 它启动方法编辑器对话框,您可以在其中更改和重新排序参数,然后这些参数会反映在提取和调用的代码中
  • 它将原始代码保留在 (* *) 注释中,以防万一出现故障,或者您需要引用它

此外,它还在代码中放置了书签(编号为 7、8 和 9),以便在提取的代码和调用站点之间轻松导航。

强烈推荐。