2009-10-16 108 views

回答

17

我更喜歡每個文件一個類。您永遠不必搜索正確的文件名,因爲它始終是類名稱。

+0

好的,但嵌套類呢?繼每個文件策略一個類之後,你會讓主類變得部分嗎?那麼你會有MainClass.cs和MainClass.NestedClass.cs ... – ParmesanCodice 2009-10-16 08:50:20

+0

而且?你想說什麼?實際上,我經常在這種情況下爲MainClass創建一個文件夾,尤其是對於大型靜態類。私有嵌套類不(總是)需要他們自己的文件,但公共的文件應該。 – 2009-10-16 08:57:15

+0

我不想提出任何觀點,我在問蒂姆他是如何嚴格遵守每個文件策略的一類關於嵌套類的。 – ParmesanCodice 2009-10-16 09:01:39

3

我認爲這是最好有每個文件一個類,並組織他們在具有相同的層次結構,作爲命名空間的文件夾。

3

大多數程序員會認爲每個文件一個類是最佳實踐。

4

通常最好的做法是每個類有一個文件。

有些人,不是我喜歡有不止一個,如果他們是相關的,非常非常小的規模。其他人可能會在原型階段做到這一點。我說開始,留在每一個文件作爲他的重要著作Code Complete

引述確實斯科特·麥康奈爾在他的授課質量話語,「把一個類在一個文件中,文件是不只是持有桶一些代碼如果你的語言允許的話,一個文件應該包含一個只支持一個目的的例程集合,一個文件強化了一個例程集合在同一個類中的想法。

6

每個文件一個類。

這樣你可以避免合併編輯時,兩個人編輯同一個文件,因爲一個正在class A和其他正在class B。雖然這在任何源代碼控制系統中都應該是自動的,但這是一個額外的步驟,可能會被錯過,這會導致問題。

遠東最好是有一個過程,不允許擺在首位出現這種錯誤。

+0

您不應該手動合併編輯,因爲兩個人在同一個文件的不同部分工作。如果你這樣做,也許是時候換一個新的版本控制系統了。 – 2009-10-16 09:00:53

+0

@Matthew - 同意,但這是一個額外的步驟,沒有必要,並且會在有人忘記在檢查編輯之前忘記執行合併時不時出現問題。 – ChrisF 2009-10-16 09:03:28

+0

我不能說其他版本控制系統,因爲我獨佔使用Subversion,但svn處理自動合併,除非編輯文件中的相同部分(即兩個人編輯當前簽入文件的第54行) – 2009-10-16 09:10:28

2

通常 - no。 以下練習「每個文件一個類」簡化了解決方案的瀏覽。 此外,如果您有一個使用悲觀方法(獨佔鎖)的開發人員和源代碼管理工具的大型團隊 - 開發人員在處理同一個文件時將遇到困難。

5

只要類是相互關聯的,我不會在同一個文件中看到多個類的問題。

如果你有resharper,你可以隨時使用導航工具找到任何類。

+0

+1同意,並非所有類都需要處於獨立單位。 – James 2009-10-16 08:51:30

+1

+1 Resharper否定導航問題(ctrl T)。 – 2009-10-16 08:53:17

+0

不是每個人都有,或者甚至可以使用Resharper(例如Express版) – 2009-10-16 08:58:17

0

我會說不,我知道的DevExpress討厭它藏漢(它有一些不好的檢測practives)。

,但我有有時,當它的一個非常小的類多數民衆贊成basicly只能由文件中的「主」類中使用。 Personaly我認爲它有點味道,有一個10K行長的.cs文件或在你的項目中有許多.cs之間的平衡。

1

我想這是根據您的偏好。 我想你會發現大多數在線示例/大多數代碼是每個文件一個類,便於管理。

我有時會把2班在一個文件 - 只有當我使用的第二類作爲一個實體,它只是作爲一個在第一類中使用。

0

我認爲它是一種「最佳實踐」方法,那麼很可能是。但是,這實際上取決於項目。我傾向於將相關代碼放到獨立的單元,例如:

MyApplication.Interfaces 
MyApplication.Utils 
MyApplication.Controllers 

我真的覺得一個類只有永遠值得它自己的單位,如果它變得巨大。但是,如果它達到了這個階段,你應該開始考慮將一些代碼移入輔助類來分離邏輯。

1

我想你問,因爲你已經注意到,它被認爲是最佳實踐。鑑於顯而易見的好處(以及這裏提到的一些不那麼明顯的好處),爲什麼你想要以不同的方式做呢?每個文件在多個類中是否有任何好處?我想不出任何。

+0

你是對的,我一直認爲最好的做法是每個文件有一個類,但是如果不是這種情況,我似乎會遇到越來越多的代碼。即使是由行業專家編寫的代碼。 – 2009-10-16 08:51:47

+0

行業專家不一定是維護代碼的專家。 – 2009-10-17 15:14:05

+0

這在演示代碼等方面並不少見,有時這樣更方便。使用演示代碼,便利勝過其他考慮因素。 – 2009-10-18 20:14:55

1

通常這是最好的解決方案,每個文件有一個類(文件的命名與包含的類完全相同)。

我只不同從,如果

  • 有很多小枚舉 - >我收集這些成一個單一的文件如Enums.cs
  • 有很多(20+)生成的類/接口彼此直接相關 - >將一個文件E.g. Interfaces.cs
  • 有些東西不是應用程序的直接功能部分,而是緊密語義上的一致性(比如你需要的所有內容,通常是一些結構,枚舉,常量和一個類) - >以interop類命名的單個文件。
  • 專用內部類 - >留在他們的父類,而不是局部類
0

我會用最就此達成一致。每個文件一個類是理想的。它可以讓您更輕鬆地查看項目中可用的內容,而無需依賴智能感知來發現給定程序集中可用的類型。

我認爲唯一一次我對每個文件規則中的一個類進行fudge的時候是我定義了一個自定義的EventArgs類,並且它與從另一個類中觸發的事件有關。然後,通常我會在同一個文件中將這些定義與該事件的委託一起定義。我不知道這是一種好的做法,還是出於純粹的懶惰?

+0

由於'EventHandler '你不需要爲事件定義委託' – 2009-10-16 09:06:37

0

如果您在一個非常大的項目上工作,太多的文件會顯着減慢構建時間(至少使用C++)。我不認爲嚴格遵守規則是必然的。

0

一類每個文件是我的首選方法,它可以幫助我擺脫任何混亂後來......我傾向於使用了很多,雖然部分類的......

0

只要我不打破1000線障礙,我會填入許多相關的類,這是有道理的。

有時抽象可能只是一個重寫的方法。

相關問題