2011-01-18 67 views
35

有人可能會認爲這是所有時代最不重要問題的候選人。然而,代碼風格對我來說是一個非常重要的話題,我想確保我以可讀的方式編寫代碼 - 對我和大多數開發人員。在哪裏放內部類?

這就是爲什麼我想知道你們在哪裏宣佈你的內部類。

我下面的下面的方法排序方案,因爲這是很常見:

public void foo() { 
    usedByFoo(); 
} 

private void usedByFoo() { 
} 

public void bar() { 
} 

我命令他們從上到下,每一個方法接近它使用的地方。

現在我可以做同樣的內部類,像這樣:

class Outer { 
    private Inner inner; 

    private class Inner {}; 

    public Outer() { 
    } 

    ... 
} 

我覺得這是最一致的風格跟着我,但我也經常看到人們要麼聲明所有的內部類在文件的頂部或底部。

鑑於我的訂購方法,我應該遵循哪種風格?最常見的做法是什麼?

+1

我覺得代碼風格太主觀...也許我錯了,只是記錄下地獄的東西 – 2011-01-18 23:13:53

+1

也許這更屬於http://programmers.stackexchange.com/ – 2011-01-18 23:40:22

回答

42

我會在文件的底部聲明內部類 - 通常你對它們的實現不感興趣,只想到你的主類的方法,所以它們不應妨礙。

9

我的首選風格是將它們放在任何看起來最有意義的地方。通常情況下,它們位於底部,所以它們不在行,但有時我發現將它們放在某些方法之前(如果這些方法是使用內部類的方法)會更有意義。

如果儘管類和方法負載過於笨重,但它可能是一個糟糕的設計選擇(內聚力太低)。我有時候讓類錯誤地通過這種方式來處理,後來處理會很糟糕 - 這些日子裏,如果我可以看到一個這樣做,我通常會重構它,甚至可能會將它重構成它自己的包。如果你的內部課程太多,你不知道如何處理他們,我會採取這種方法。甚至有人建議不要使用內部類(因爲這個原因)(雖然我不同意 - 它們是一個寶貴的資源,如果使用得當,你只需要小心他們不會失去控制。)