2009-09-06 81 views
1

我繼承了一個大型C#項目,其中所有變量和參數名稱都是written_like_this重構整個項目的變量和參數名稱

是否有一些簡單的方法或工具,我可以使用它們全部自動重命名,只需點擊10次鼠標即可。所以上面的例子會變成writtenLikeThis(即駝峯案例)。和實例變量_ writtenLikeThis

它也需要更新XMLDoc註釋。

我大概可以用正則表達式來解決某些問題,但前提是我不重寫輪子。

謝謝。

+0

爲什麼?重點是什麼?你的代碼是否更快或無錯?我懷疑它會更具可讀性,因爲你現在擁有的和你想要的都對我來說似乎很好。不是說你不應該這樣做。只是不瞭解動機。在修復錯誤或添加功能方面,你的時間不會更好嗎? – paxdiablo 2009-09-06 15:08:11

+5

讓代碼庫更愉快的工作 - 並符合貴公司的命名約定,例如,對我來說,感覺就像是一個值得讚揚的目標。如果ReSharper有一個「強制約定」的批處理作業,但我不認爲它確實是...... – 2009-09-06 15:08:13

+2

@Pax:遵守最近收購的應用程序的編碼風格指南是我的猜測。 – JoshJordan 2009-09-06 15:08:33

回答

1

不,Visual Studio中的重構工具不支持這種複雜性。

您需要手動完成。你可以編寫一些實用程序來重寫項目文件,但是它會在語義上運行 - 分離,並且可能會選擇其他變量名稱以外的其他名稱,這是您寧願避免的。

你會如何,例如,區分之間:和

string my_badly_named_string = "Hi, there!"; 

string aGoodString = @"We need to rename the my_badly_named_string because 
         it looks ugly"; 

VS重構工具知道的區別,因爲它的源文本的俯視圖的語義。你的工具不會。

但說實話,這將是泰坦的作品。還有一個危險,你會引入更多的錯誤。最好保持原樣。

+0

我不知道,這聽起來很簡單,處理一些正則表達式給我。你給的例子實際上可以只使用內置的.NET字符串類在一行中完成。 – JoshJordan 2009-09-06 15:15:48

+0

正則表達式總是很容易,直到你開始使用它們來完成更適合解析的任務時:-) – paxdiablo 2009-09-06 15:18:14

2

我同意NewInTown,你應該保持原樣,但是,如果你想改變名稱,並且你有很好的單元測試,那麼當你需要修改一個bug時,功能,然後慢慢開始將名稱更改爲新方案。

這會阻止您嘗試自動執行它並創建許多新的錯誤,並且您不會浪費時間更改不改進應用程序的工作代碼。

我傾向於使用時間,我正在修復一個函數來做一些重構或基本的優化,因爲無論如何我都在那個函數中。

0

如果您剛剛繼承了該項目,則可能需要將其保留下來,直到您需要開始使用該項目並對其進行更新爲止。如果你的重構只是純粹的重命名,那麼花在其他地方的時間可能會更好。在您處理各個部分時重命名內容也會直觀地顯示您去過的地方。

如果您確實想要重命名變量和參數名稱,您可能需要嘗試構建一個只分析代碼文件以進行文本替換的過程(使用正則表達式或基本字符串操作,具體取決於您所知道的情況,記住它只是一次只會改變)這可能比評估代碼重構工具更快。

1

我最近做了這個使用resharper。它比Visual Studio中的實用工具快得多。我必須去每個標識符並進行重構/重命名,但它是安全的,因爲它正確地重命名所有內容。重要的一點是代碼必須在開始之前完全編譯。它有助於在一段時間內重新編譯一次,以確保事情仍然保持良好狀態。它沒有看源代碼,而是使用IL或codedom或其他東西。對於一個非常大的項目來說,這仍然很耗時,但工作起來。

順便說一句。我花了整整一天的時間改變所有本地增值業務,這是一個以下劃線開頭的繼承項目,所以他們沒有。我個人不能忍受看到被過多的前導下劃線污染的代碼。但那只是我 - 每家店都不一樣。