【问题标题】:Finding the try for an except or finally寻找例外或最终的尝试
【发布时间】:2023-03-25 23:28:01
【问题描述】:

我正在处理一些具有非常长的方法(10k 行!)以及一些奇怪使用 try-finally 和 try-except 块的代码。后者有些本身就很长,并不总是在方法的开头尝试。

显然,我正在尝试重构代码,但与此同时,如果我可以跳到块的开头并查看那里发生了什么,那么仅仅能够修复几个常见的问题会容易得多。当它在 20 多页之外找到它时,即使使用 CNPack 彩虹(“代码结构突出显示”)也是很乏味的。

我正在使用 D2010 并安装了 GExperts(带有 DelForExp)、CNPack 和 DDevExtensions,但我找不到任何可以让我从 try 跳转到 finally 或返回的东西。我错过了什么吗?是否有另一个我可以使用的加载项来获得这个?

【问题讨论】:

  • cnpack.org/index.php?lang=en 有一些我们称之为“彩虹”的东西,它默认启用,您可以清楚地看到函数/过程、循环、try-except/finally 等匹配的“结束”。
  • 是的,我也这么称呼它。在这种情况下它有点帮助,但是很容易意外地跳过一个方法的结尾/另一个方法的开始,然后在我反复点击 page-dn 时继续沿着蓝线向下。一键跳2000行要好很多。

标签: ide delphi shortcuts gexperts


【解决方案1】:

GExperts 在 Editor Experts 中有它:“移动到匹配分隔符”,默认使用键盘快捷键 Ctrl+Alt+Right。如果您反复调用它,它会从try 循环到匹配的finallyexcept,再到end,然后返回到try,依此类推。

【讨论】:

  • 我试过了。事实证明,VMware 窃取了 CTRL-ALT-{anything} 代码,我不得不重新映射密钥。由于代表人数少,我无法投票赞成您的答案,只能接受。
  • 太好了,很高兴看到你把它整理好了。
【解决方案2】:

如果您要重构代码,我建议您将每个 Try except/finally End 代码块命名,并将其移动到 main 方法中的单独函数/过程中。

第二个建议,从最里面的 try except/finally 代码块开始。

procedure class1.method1 ;
var
   anyVariables : ... ;
begin
 ....
 try 
 ....
 finally
 ... 
 end ;
 ....
end ;

.

procedure class1.method1 ;
var
   anyVariables : ... ;
   procedure first_try_finally_block ;
   begin 
      try 
      ....
      finally
      ... 
      end ;
   end ;
begin
 ....
 first_try_finally_block
 ....
end ;

我希望这将帮助您解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2015-08-26
    • 2014-11-05
    • 2021-10-02
    • 1970-01-01
    相关资源
    最近更新 更多