2012-08-03 36 views
0
private static final Logger LOGGER = Logger.getLogger(AbstractDbClient.class); 

protected Connection connection; 


protected Connection connection; 

private static final Logger LOGGER = Logger.getLogger(AbstractDbClient.class); 

該訂單是場declareing更好的更好嗎?有些書指出,應該通過private/public/protected /等命令他們,如果基於此,第二個代碼更好,但看起來很糟糕。如果incluse static final var或者static var?哪個訂單規則是?該訂單是現場宣佈

+1

檢查它是如何在開源項目中完成的。爲什麼?因爲如果你想分享代碼(你會這麼做),最好是以其他人習慣的方式來做。 – Augusto 2012-08-03 08:17:53

+0

我查了一些開源代碼,但沒有法律。每個編碼器都有自己的風格。我知道一些書籍應該通過訪問修飾符來命令它們,但我認爲常量定義應該是其他的,然後通過訪問修飾符 – jiafu 2012-08-03 08:22:32

回答

1

我個人喜歡我所有的靜態在一個類的頂部,並在公共,受保護,默認,私人訂單的所有領域。

public static final Integer a; 
private static final Integer b; 

public Integer c; 
Integer d 
private Integer d; 

我也傾向於增加靜德和非靜態字段之間的線路。

但是這是一個意見問題。也許問問你的同事你與誰一起工作。在這類事情上最好保持一致。

4

一個通用的標準是將所有公共變量置於頂部,然後是保護,然後是私有。有些人在實例變量之前放置了類/靜態變量,有些人將它們放在後面。

如果您在編寫新代碼的團隊中工作,最好聚在一起並決定一個公約。如果您已經添加了現有的代碼,請仔細閱讀並找出以前作者遵循的約定。您不希望在相同的代碼庫中混合使用樣式。

6

我建議你保持一致,但我更願意按照它們設置的順序排列字段,因爲這樣可以更容易理解代碼並對其進行調試。恕我直言。

static final fields 

final fields 

mutable fields. 
+1

將它們分組,如果案例是多線程的 - 你不希望最終字段緩存線要修改。總體而言,數據佈局在併發性方面是一項重要的技術。 – bestsss 2012-08-03 08:31:38

+0

儘可能地讓可變字段儘可能明顯,這就是爲什麼我將它們分組的原因。 – 2012-08-03 09:29:58

2

數據佈局實際上具有性能屬性,除了按照您感覺舒適的順序排列字段。 我傾向於遵循類似:

  • 靜態最終字段,
  • 靜態字段
  • 最終場
  • 修改字段
  • 揮發性領域的使用情況進行分組

有時

private field usedOnlyInFoo 
method foo(){ 
} 

More on the topic爲什麼數據佈局很重要。雖然除了數組/直接緩衝區之外,沒有正式的方式來強制執行Java中的數據佈局,但編譯器(JVM)通常將這些字段置於其聲明順序中。