2008-09-15 27 views
0

隨着我在我的解決方案中獲得越來越多的名稱空間,我的文件頂部的使用語句列表變得越來越長。在我的單元測試中,尤其如此,對於每個可能調用的組件,我需要包括接口的使用,IoC容器和具體類型。有沒有什麼辦法擺脫在我的.cs文件的頂部使用長列表?

隨着我的集成測試文件中17條線的使用率上升,它變得非常混亂。有誰知道是否有一種方法來爲我的基地使用語句定義一個宏?其他解決方案?

回答

4

有些人喜歡躲在usings在#region。否則,我認爲你運氣不好。除非你想把命名空間放在你的所有參照物上。

1

ReSharper的 - 附加在Visual Studio中 - 有一個特點,剝離unsued使用的從一個文件,但我不知道什麼都頗爲你描述。

+0

VS2008確實太右點擊 - >組織usings->刪除未使用的 – 2008-09-15 11:46:45

+0

啊,好。尚未使用2008年。 – Rikalous 2008-09-15 12:31:21

1

有誰知道是否有一種方法來 使用 語句爲我的基地定義了一個宏?

您的意思是說,您經常使用的名稱空間會自動添加到每個新類中?如果是的話,Resharper也可以這樣做。另外,它還有一個功能,可以將代碼清理到代碼清理區域。 Resharper可能是要走的路(你可能不會後悔,因爲我可以從我自己的經驗中說出)。

6

我知道我不應該大聲說出來,但是,可能會重新考慮你的設計。

17在1個文件中使用=大量耦合(在命名空間級別上)。

+0

我想他提到他主要是在談論測試。我不認爲你可以避免耦合你的測試! – 2008-09-15 12:17:41

2

受不了Resharper自己。但我也不能忍受使用陳述凌亂。我使用VS的Power Commands加載項,它有一個方便的'刪除和排序'使用語句命令(以及其他好東西)。

1

VS2008增加了「組織Usings」上下文菜單,其中有一個排序,刪除,「刪除和排序」選項,會做你每個文件想要什麼。 Visual Studio Power Commands外接程序在解決方案資源管理器中爲項目和解決方案添加了一個上下文菜單,該項目和解決方案分別是項目中的所有文件和解決方案中的所有項目的「移除和排序」。

0

在VS2008中,你可以右鍵點擊該文件CS和選擇「整理Usings」。它將剝離未使用的使用併爲您分類。除此之外,我只會使用#region。此外,CTRL + M + O將在設計時摺疊所有區域功能等。我使用這個快捷方式很多!

1

如果要更改創建新文件時完成的默認使用語句,請查看C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033目錄。它包含一堆壓縮文件,您可以修改它以更改代碼文件的模板(顯然會向上移動目錄結構以更改其他語言或其他類型的文件)。

更多信息請參見here

2

這裏有四個可能的問題;

代碼中的命名空間將您的類劃分得太細。例如,如果您有,則爲;

using MyCompany.Drawing.Vector.Points; 
using MyCompany.Drawing.Vector.Shapes; 
using MyCompany.Drawing.Vector.Transformations; 

考慮將它們摺疊到單個MyCompany.Drawing.Vector命名空間。你可能沒有分得太多。 Visual Studio Code Analysis/FxCop有一個規則,檢查命名空間中的類的數量。太少了,它會警告你。

您正在將太多測試放入同一班。如果您在同一個類中引用System.Data,和System.IO,請考慮編寫更多的原子測試 - 一些訪問數據庫,一些訪問數據庫,一些訪問文件系統。然後將每種類型分爲三個測試類。

您正在編寫測試過多。如果您引用了很多名稱空間,那麼您的測試可能會將太多功能耦合在一起。這種耦合通常可能會有問題,所以嘗試將大範圍的功能分解爲更小的部分,然後在單獨的文件中測試這些功能。

許多是多餘的。它們是全部使用,還是隻是從其他文件複製粘貼。右鍵單擊代碼編輯器並從「組織使用」選項中選擇以刪除不使用的語句。

1

它可能有助於使用別名。不知道這是值得的,但不是:

using System.Web.UI; 
using System.Web.Mail; 
using System.Web.Security; 
... Control ... 
... MailMessage ... 
... Roles ... 

你可以使用:

using W = System.Web; 
... W.UI.Control ... 
... W.Mail.MailMessage ... 
... W.Security.Rolse ... 
相關問題