delphi2010中的错误行为/错误”;“提取方法”;

delphi2010中的错误行为/错误”;“提取方法”;,delphi,refactoring,delphi-2010,Delphi,Refactoring,Delphi 2010,当我试图在if语句中提取methode时,我遇到了这个问题。我在上面找不到任何报告的bug 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(int

当我试图在if语句中提取methode时,我遇到了这个问题。我在上面找不到任何报告的bug

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;
我得到的结果是:

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

  showmessage(inttostr(x));
end;
新方法是:

procedure TForm1.newMethode;
var
  x: Integer;
begin
  x := 8;
end;
有人能检查一下Delphi XE的性能吗?有人知道是否有报告吗?

这是“提取方法”重构中的一个错误

或者,您可能希望使用重构工具中的“提取方法”重构。在99欧元,这是一个工具,从Delphi 5开始工作,并已大大改善了他们的提取方法重构这么多,我已经很久没有使用Delphi内置的一个

两大好处:

  • 它将启动“方法编辑器”对话框,您可以在其中更改和重新排序参数,然后这些参数将反映在提取和调用的代码中
  • 它将原始代码保留在(**)注释中,以防出现故障,或者您需要引用它
此外,它在代码中放置书签(编号为7、8和9),以便在提取的代码和呼叫站点之间轻松导航


强烈推荐。

您可以在

+1上找到有关提取方法的答案,以便提出一个有趣的主题。但我相信这是一个完全正确的提取。@Cosmin:我不知道。它应该是
过程NewMethod(var x:Integer);开始x:=6;结束。X不应该是局部变量。@Cosmin它错了,X有一些未定义的值而不是8,这不是delphi2010中提取方法的通常行为,通常X应该如Rudy所述作为var参数给出。根据什么规则,
X
应该是
var
参数?为什么函数不返回整数?如果所选块使用20个局部变量,会发生什么情况?我想说的是,除非你先定义正确性,否则你不能谈论正确性。唯一的答案是
。。。误差幅度很小…
。它没有定义重构规则。@Cosmin基于在D2010中使用此函数时所使用的行为。作为重构的一部分,丢失变量的值并更改输出是一个错误,我认为应该予以纠正。谢谢,我会看一看,虽然这不取决于我,但我可以建议。。。它是将函数提取到过程中还是仅提取到过程中?它同时执行函数和过程:只需给结果一个类型,就可以得到一个函数。我推荐ModelMaker Code Explorer!这如何回答这个问题?