2010-10-04 108 views
0

C#中有沒有辦法整理下面的類聲明?C#嵌套類,清理聲明

namespace Application.Namespace 
{ 
    public class MasterClass 
    { 
     public class FlyingSaucer 
     { 
      public class Rotator 
      { 
       public class Cube 
       { 

仍然維護類結構,只是清理聲明。

+0

問題不清楚。 – Nayan 2010-10-04 10:30:14

+0

對我來說很清楚,如何清理聲明。 1行聲明的立方體或刪除嵌套的複雜性。 – RvdK 2010-10-04 10:36:52

+0

謝謝,我很喜歡反饋,說實話我想我們會調查爲什麼我們需要這樣的嵌套複雜性 – Guamez 2010-10-04 10:38:18

回答

2

不,它已經很整齊了,因爲你有4層嵌套。

但你幾乎可以肯定不應該有4層的嵌套開始。你爲什麼想這麼做?你已經有了一個名爲subClass1通過正常意義的子類(即從其他具體類派生; subClass1只從object派生)

嵌套類是相當罕見的 - 我不知道以爲我見過甚至三層嵌套,更不用說四層了。你爲什麼認爲這是一個好主意?

+0

感謝Jon的回覆。不要擔心類名自己,這只是爲了說明我的觀點。至於爲什麼我們有四個層次的嵌套....嗯,好問題! – Guamez 2010-10-04 10:35:51

+0

爲什麼嵌套到四個級別被視爲「不好的做法」? – Guamez 2010-10-04 10:36:29

+0

@Guamez。如果嵌套類是公有的,就像它們在這裏一樣,它在調用代碼時在語法上很尷尬,因爲必須使用從最外層類通過的完整路徑,因爲不能聲明它是一個名稱空間(這是名稱空間中的「名稱空間」 .NET的意義,外部類名也是一般意義上的「名字空間」)。這也是一種難聞的氣味,因爲你很可能最終迫使某人在外部階層的角度思考,即使那時他們不關心他們。私人班的尷尬,我肯定在過去至少有3級... – 2010-10-04 10:49:38

0

它看起來像你是繼承與子類混淆。

子分類通常相當少見。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – 2012-11-15 03:52:29

+0

實際上是的,如果我的觀察結果是那些例子每一個都是以前的更專業化的版本......你見過旋轉的博格立方體飛碟嗎? – 2012-11-15 12:27:18

1

是否有

FlyingSaucer之間的任何關係 - >肩 - >立方,我想這是遏制的一個典型例子。

FlyingSaucer包含旋轉器和旋轉器包含多維數據集。

所以如果是這樣的話,你可以考慮在FlyingSaucer中創建Rotator和Cube屬性來使用Composition。

您可以在創建對象FlyingSaucer時注入這些依賴關係。這將刪除你的類中非常深的嵌套,我認爲,你可能需要從你的主類訪問FlyingSaucer,Rotator,Cube的對象。

所以在這裏使用組合,它會真正使您的類層次結構更簡單,易於擴展和維護。