2010-01-25 25 views
10

這裏http://source.android.com/source/code-style.html#follow-field-naming-conventions它指出:Android私人領域命名指南可以嗎?

字段名稱

  • 非公開,非靜態字段名稱以米
  • 靜態字段名稱以s開頭。
  • 其他字段以小寫字母開頭。
  • 公共靜態final字段(常量)是ALL_CAPS_WITH_UNDERSCORES。

它還指出:

下面的規則並不指南或建議,但嚴格的規定。您可能不會忽視我們下面列出的規則,除非在需要使用的基礎上批准。

我不喜歡在班級中的私人或包字段之前的「m」約定。我真的覺得這沒有啓發意義,我的意思是,如果我們嘗試應用好的設計,那麼這些類的低耦合意味着幾乎沒有公共領域。實際上,在我的程序中,我通常沒有公共字段,即使當我需要一些我使用的getter和setter ...

那麼,爲什麼我應該強制幾乎所有的字段在程序中用「m」在他們面前?擁有少數公共領域,如果有的話,在前面有些「g」或什麼的話,會不會更容易?或者像bean一樣使用setter和getters? 這真的讓我的代碼難以閱讀....

此外,遵循這些準則,方法中使用的局部臨時變量沒有限制,因此它們很容易被誤認爲公共全局字段(也沒有限制)。 。這也是我發現是錯誤的,因爲它是一個可能的錯誤來源... 我明白有一個區別於字段的方法,但私有/受保護的成員字段是最常用的應用程序,他們不應該不太「可讀」。

您認爲如何?我應該遵循指導方針嗎?

+0

像這樣的前綴的原因之一經常要求是防止隱藏成員字段。例如,如果您沒有任何前綴,那麼您通常對構造函數或setter方法具有與成員字段名稱相同的參數。在這種情況下,您必須使用「this」訪問成員字段。在它隱藏的時候在它前面。程序員偶爾會忘記「這個」,這會導致錯誤。公共領域的前綴不是很有用,因爲無論如何公共領域都不需要引用setter。 – 2010-01-31 01:50:58

+0

我其實更喜歡私人領域的m_前綴,因爲它使您的類方法更易於閱讀。這些約定被使用,因爲代碼閱讀比它的書面更多...我認爲這就是代碼完成somwhere? – 2010-10-05 03:07:46

+0

我同意你..我不喜歡「米」的約定,我很樂意不使用它 – hendrix 2013-03-15 12:42:17

回答

10

這些編碼指南適用於Android開放源代碼項目,它是核心的Android平臺。如果您希望將任何代碼接受到核心平臺中,您必須遵循這些準則。你可以在自己的應用程序中做任何你想做的事情。
關於指南本身,我認爲它們非常合理,與商業應用中使用的許多標準相似。一般來說,你想使用getter和setter來進行公共字段訪問,並且你不想擁有全局公共變量。只有全球公衆常數是可以的。
所以簡短的回答是關注他們的開源項目,決定在你的應用中關注他們。

1

關於getters \ setters,實際上建議不要在Android中使用它們。

我發現這對「性能設計」頁面(節:避免內部getter/setter方法):http://developer.android.com/guide/practices/design/performance.html

底線,他們推斷,實例字段查找比虛方法調用更有效(由於JIT的優化)。

我想我會繼續在我的代碼中使用getters \ setter,但這可能是一種提高性能的簡單方法(對於執行大量數據操作的應用程序尤其如此)。

+3

你必須使用setter/getters來訪問另一個類的對象的私有字段。但是,您應該限制內部使用這些方法。在內部,爲什麼要使用'name = getName()',直接訪問變量會更有效率(name = mName) – Marqs 2011-08-18 12:43:09