Java編程 -- 命名規範

轉自:http://www.hawstein.com/posts/google-java-style.html#Naming

 

命名約定

5.1 對全部標識符都通用的規則

標識符只能使用ASCII字母和數字,所以每一個有效的標識符名稱都能匹配正則表達式\w+html

在Google其它編程語言風格中使用的特殊前綴或後綴,如name_mNames_namekName,在Java編程風格中都再也不使用。java

5.2 標識符類型的規則

5.2.1 包名

包名所有小寫,連續的單詞只是簡單地鏈接起來,不使用下劃線。正則表達式

5.2.2 類名

類名都以UpperCamelCase風格編寫。編程

類名一般是名詞或名詞短語,接口名稱有時多是形容詞或形容詞短語。如今尚未特定的規則或行之有效的約定來命名註解類型。編程語言

測試類的命名以它要測試的類的名稱開始,以Test結束。例如,HashTestHashIntegrationTestpost

5.2.3 方法名

方法名都以lowerCamelCase風格編寫。測試

方法名一般是動詞或動詞短語。google

下劃線可能出如今JUnit測試方法名稱中用以分隔名稱的邏輯組件。一個典型的模式是:test<MethodUnderTest>_<state>,例如testPop_emptyStack。 並不存在惟一正確的方式來命名測試方法。spa

5.2.4 常量名

常量名命名模式爲CONSTANT_CASE,所有字母大寫,用下劃線分隔單詞。那,到底什麼算是一個常量?pwa

每一個常量都是一個靜態final字段,但不是全部靜態final字段都是常量。在決定一個字段是不是一個常量時, 考慮它是否真的感受像是一個常量。例如,若是任何一個該實例的觀測狀態是可變的,則它幾乎確定不會是一個常量。 只是永遠不打算改變對象通常是不夠的,它要真的一直不變才能將它示爲常量。

// Constants static final int NUMBER = 5; static final ImmutableList<String> NAMES = ImmutableList.of("Ed", "Ann"); static final Joiner COMMA_JOINER = Joiner.on(','); // because Joiner is immutable static final SomeMutableType[] EMPTY_ARRAY = {}; enum SomeEnum { ENUM_CONSTANT } // Not constants static String nonFinal = "non-final"; final String nonStatic = "non-static"; static final Set<String> mutableCollection = new HashSet<String>(); static final ImmutableSet<SomeMutableType> mutableElements = ImmutableSet.of(mutable); static final Logger logger = Logger.getLogger(MyClass.getName()); static final String[] nonEmptyArray = {"these", "can", "change"}; 

這些名字一般是名詞或名詞短語。

5.2.5 很是量字段名

很是量字段名以lowerCamelCase風格編寫。

這些名字一般是名詞或名詞短語。

5.2.6 參數名

參數名以lowerCamelCase風格編寫。

參數應該避免用單個字符命名。

5.2.7 局部變量名

局部變量名以lowerCamelCase風格編寫,比起其它類型的名稱,局部變量名能夠有更爲寬鬆的縮寫。

雖然縮寫更寬鬆,但仍是要避免用單字符進行命名,除了臨時變量和循環變量。

即便局部變量是final和不可改變的,也不該該把它示爲常量,天然也不能用常量的規則去命名它。

5.2.8 類型變量名

類型變量可用如下兩種風格之一進行命名:

  • 單個的大寫字母,後面能夠跟一個數字(如:E, T, X, T2)。
  • 以類命名方式(5.2.2節),後面加個大寫的T(如:RequestT, FooBarT)。

5.3 駝峯式命名法(CamelCase)

駝峯式命名法分大駝峯式命名法(UpperCamelCase)和小駝峯式命名法(lowerCamelCase)。 有時,咱們有不僅一種合理的方式將一個英語詞組轉換成駝峯形式,如縮略語或不尋常的結構(例如」IPv6」或」iOS」)。Google指定了如下的轉換方案。

名字從散文形式(prose form)開始:

  1. 把短語轉換爲純ASCII碼,而且移除任何單引號。例如:」Müller’s algorithm」將變成」Muellers algorithm」。
  2. 把這個結果切分紅單詞,在空格或其它標點符號(一般是連字符)處分割開。
    • 推薦:若是某個單詞已經有了經常使用的駝峯表示形式,按它的組成將它分割開(如」AdWords」將分割成」ad words」)。 須要注意的是」iOS」並非一個真正的駝峯表示形式,所以該推薦對它並不適用。
  3. 如今將全部字母都小寫(包括縮寫),而後將單詞的第一個字母大寫:
    • 每一個單詞的第一個字母都大寫,來獲得大駝峯式命名。
    • 除了第一個單詞,每一個單詞的第一個字母都大寫,來獲得小駝峯式命名。
  4. 最後將全部的單詞鏈接起來獲得一個標識符。

示例:

Prose form                Correct               Incorrect
------------------------------------------------------------------
"XML HTTP request"        XmlHttpRequest        XMLHTTPRequest
"new customer ID"         newCustomerId         newCustomerID
"inner stopwatch"         innerStopwatch        innerStopWatch
"supports IPv6 on iOS?"   supportsIpv6OnIos     supportsIPv6OnIOS
"YouTube importer"        YouTubeImporter
                          YoutubeImporter*

加星號處表示能夠,但不推薦。

Note:在英語中,某些帶有連字符的單詞形式不惟一。例如:」nonempty」和」non-empty」都是正確的,所以方法名checkNonemptycheckNonEmpty也都是正確的。

相關文章
相關標籤/搜索