2013-03-13 57 views
14

我和我們公司的teamlead \ architect討論過這個話題。我們應該把類,枚舉和其他實體放到他們自己的文件中嗎?

他認爲,如果「通過邏輯連接的實體」放在一個CSV文件中,那麼理解大型項目會更容易。

我引述:

  1. 「邏輯和接口和類可以在一個地方可以看出的整體結構,這是不能被駁倒一個參數要看到的一樣。但有一些文件需要使用工具,類圖,R#進行導航等。「

  2. 「繼可憐的理論我可能會尖叫說的分隔文件的軍隊是很酷,但是當涉及到更改現有的代碼,特別是如果你沒有這個代碼的一個作家,這是非常困難的要了解大量零散文件,所以,在論壇上,你可以寫「一個enum-一個文件」,但在實踐中這種方法不應該被用來「

  3. 」 ......至於代碼分離現在不是編輯同一個文件的問題,合併不是問題。「

我聽到和讀到的是我們要創建每個枚舉類一個的.cs文件等很多次,這是最好的做法。

但我無法說服他。他說他不相信像Jon Skeet這樣的知名程序員。順便說說,這裏是Skeet對此主題的看法Where is the best place to locate enum types?

你覺得呢?有真正的問題嗎?或者這是一個品味問題,應該由組織的編碼標準來規範?

+0

我希望你現在已經跨越了他併成爲團隊的領導者/建築師。 – bubbleking 2016-05-03 20:11:56

+0

@bubbleking不,我剛剛離開那個工作兩個月前))) – EngineerSpock 2016-05-05 09:32:40

回答

7

在我看來:

所需要更大的邏輯類中可以留在其文件小枚舉和類。
但是,如果在該範圍之外使用較小的類和枚舉,則應該分別使用它們(儘管如果邏輯鏈接它們本身可能在同一個文件中)。
所以我同意他的邏輯耦合。

說了這麼多,我必須說有其他的選擇,你可以在一個項目中創建邏輯文件夾,以保存來自同一邏輯環境或連接的類。
今天的IDE使您可以通過Go-To功能輕鬆訪問和移動整個解決方案,因此找到代碼不是問題。

將邏輯組件保持在一起(只要它們緊密耦合)確實在縮放時具有很大的優勢。隨着項目越來越大,它往往會變得越來越混亂,而這正是他試圖避免的。

順便說一句,如果你看過飛碟雙向的觀點觀察,你會發現:

假設他們會通過其他類使用,使他們的頂級類型在他們自己的文件。

+2

邏輯文件夾==命名空間,如果你保持一個很好的習慣,每個命名空間級別都在單獨的文件夾中。 – 2013-03-13 09:41:44

+0

正確的和實際的文件夾確實有助於在解決方案/項目範圍中對此進行可視化 – 2013-03-13 09:43:58

1

我認爲你的「teamlead \ architect」意見主要是基於命名空間的不佳用法。每次我聽到開發人員的這種說法都是因爲幾乎完全缺乏命名空間的使用(如果你添加了很多文件,它變得非常混亂)

2

這是非常值得關注的問題,所以倒不如張貼在這裏:

https://codereview.stackexchange.com/

但是,通常你應該將所有類型的定義,在他們自己的文件,也有一些例外:

  • 用來提供的合同守則合同類抽象基類或接口在邏輯上屬於該類。

  • 這是一個枚舉,它是只有用作參數,類中的屬性或返回值也屬於該類(但不是嵌套在該類中)。

可能還有其他一些例外情況,但通常每種類型都應該放入單獨的文件中。

1

我不同意「teamlead/architect」在這裏提出的許多觀點。

就像很多關於代碼的事情一樣,這是一個意見問題。

就個人而言,我認爲最好是創建一個.cs文件,每個枚舉,類等等。通常如果有一個與枚舉關係最密切的類,並且我將它們放在同一個文件中。

我接受公司可以有自己的編碼標準,但是這裏建議的標準是錯誤的,因爲它違背了我認爲很好的做法。

1

你和他可以看看互聯網上的大量複雜的開源項目。看看github,codeplex和類似的地方。

例如看看MVC的源代碼。如果每個文件對於Microsoft來說足夠好,並且像MVC這樣複雜的項目,我認爲這對你們來說也是一個很好的機會。

就我個人而言,我使用類/接口每個文件的方法(除了在特定情況下,像有一點枚舉,但主觀),我沒有看到任何問題。

2

有趣的問題,這是我的承擔。

您必須區分邏輯分組(名稱空間)和物理分組(文件/項目)。

在任何情況下,枚舉都應該放在它智能所屬的邏輯名稱空間中,而不是放在只包含枚舉的名稱空間中,或者甚至不在名稱空間名稱中指定枚舉。有一個'枚舉'命名空間是沒有意義的,因爲你會混淆概念,並且不指定它所屬的域。

如果只有一種類型的類使用枚舉,那麼也可以將它放在類本身中。這樣,顯然它屬於那個特定的類,因此它在相同的代碼文件中。如果枚舉更像是一個用於多個類的通用枚舉,然後將它分開放置在它自己的代碼文件中。

所以我不同意你的團隊領導:如果你把它放在同一個文件中,把它作爲類的一部分,因爲如果你把它放在同一個文件中,那就是你實際說的,否則就把它放在它自己的文件中代碼文件。無論如何,我認爲這是一個更加一致的用法。

相關問題