2012-10-11 31 views
6

我發現某些類型的代碼清理和重構非常困難,因爲難以將一個單元添加到大型項目的用例子句中。將單位添加到項目中所有單位的使用條款?

我想在單個項目中爲所有delphi .pas單元的interface-uses-clause添加一個單元,這意味着需要在500多個位置手動執行該單元。每次我重構一個巨大的單元並將它從一個單元拆分爲兩個單元時,我可能會使用諸如「記事本++」之類的將「MyOldUnit」更改爲「MyOldUnit,MyNewUnit」的東西來搜索和替換,但有時候,這樣做並不安全。它也忽略了「MyOldUnit」是使用條款中最後一件事(「使用MyOldUnit;」)的情況。

無論如何,搜索和替換文件是危險的業務。如果不存在這樣的工具,我正在考慮使用Castalia delphi解析器編寫一個工具。我已經檢查過GExperts,Castalia,ModelMakerCodeExplorer,它們都沒有辦法將單位批量插入到項目中的所有使用條款中。我希望有一個工具來做到這一點。其次,在許多情況下,我正在將一個功能從一個單位移到另一個單位,但這意味着我需要將該單位添加到該項目單位的30%,而不是其他單位的70%,而不是其他單位。已添加的%。這意味着需要解析器方法,而不是正則表達式方法。

+2

還有的(很老)'JclUsesWizard'在JCL \專家\ useswizard,也許它可以爲您服務爲出發點。 –

+0

你不需要一個真正的解析器來做到這一點。只是一個令人討厭的正則表達式的腳本使用Perl或Python或任何你喜歡的正則表達式腳本。如果你想要一些健壯的東西,你需要一個真正的解析器,但是對於你自己的代碼庫來說,一次性的應用程序卻不需要。 –

+4

你有沒有試過CnPack? – kobik

回答

3

因爲我們都編寫代碼,所以我們肯定會在其他項目中使用。如果將界面部件從一個單元移動到另一個單元,則會破壞項目。與舊的和新的單位一樣。

但是你可以重構而不會破壞你的項目。只需將部件(單元,類,方法,過程)標記爲不建議使用。 你的代碼正在工作,但你會被編譯器警告。

這裏從一個單元移動過程到另一個的例子:

unit Foo; 

interface 

procedure FooProc; deprecated; // new location in unit FooNew 

implementation 

uses 
    FooNew; 

procedure FooProc; 
begin 
    FooNew.FooProc; 
end; 

end. 
+0

這是一個非常實用的想法。 +1。 –

相關問題