2013-06-25 10 views
7

Я имею дело с некоторым кодом, который имеет фантастически длинные методы (строки 10k!) И некоторое нечетное использование блоков try-finally и try-except. Некоторые из них длинные сами по себе и не всегда имеют попытку в начале метода.Найти попытку за исключением или, наконец,

Очевидно, что я пытаюсь реорганизовать код, но тем временем просто возможность исправить пару общих патологий будет намного проще, если я могу перейти к началу блока и посмотреть, что там происходит. Когда это на 20 + страницах, вы можете найти его даже с радугой CNPack («подсветка кода») просто утомительно.

Я использую D2010 и установлен Gexperts (с DelForExp), CNPack и DDevExtensions, но я не могу найти ничего, что позволяет мне перейти от попытки к окончанию или назад. Я что-то упускаю? Есть ли еще одна надстройка, которую я могу использовать, и это поможет мне?

+2

http://www.cnpack.org/index.php?lang=en что-то из нас называют «радугой», оно включено по умолчанию, и вы можете четко видеть соответствующий «конец» для функций/процедур, циклов, try-except/finally и т. д. – ComputerSaysNo

+0

Да, и я так называю это. Это немного помогает в этой ситуации, но очень легко случайно пропустить конец одного метода/начала другого, и просто продолжайте следовать синей линии, когда я нажимаю страницу-dn несколько раз. Прыгать 2000 строк в одном ключевом комбо намного лучше. –

ответ

11

GExperts есть в редакторе Эксперты: «Переместить в соответствующий разделитель», с комбинацией клавиш Ctrl + Alt + Right по умолчанию. Если вы вызываете его повторно, он циклически переходит от try к соответствующим finally или except, к end, затем обратно в try и так далее.

+1

Я пробовал это. Оказывается, VMware крадет коды CTRL-ALT-{ничего}, и мне пришлось переназначить ключи. И с низкой репутацией я не могу проголосовать за ваш ответ, только принимайте его. –

+0

Отлично, я рад видеть, что вы разобрались. –

+1

спасибо за быстрый ответ. –

0

Если вы собираетесь реорганизовать код, я бы посоветовал вам назвать каждый блок Try Except/finally End code и переместить его в отдельную функцию/процедуру в основном методе.

Второй совет, начните с внутренней самой попытки, за исключением/окончательно кода кода.

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 ; 

Я надеюсь, что это поможет вам решить вашу проблему.