Google Java編程風格指南(1)

前言

码报开奖结果本期 www.iwqgw.icu 這份文檔是Google Java編程風格規范的完整定義。當且僅當一個Java源文件符合此文檔中的規則, 我們才認為它符合Google的Java編程風格。

與其它的編程風格指南一樣,這里所討論的不僅僅是編碼格式美不美觀的問題, 同時也討論一些約定及編碼標準。然而,這份文檔主要側重于我們所普遍遵循的規則, 對于那些不是明確強制要求的,我們盡量避免提供意見。

1.1 術語說明

在本文檔中,除非另有說明:

  1. 術語class可表示一個普通類,枚舉類,接口或是annotation類型(@interface)

  2. 術語comment只用來指代實現的注釋(implementation comments),我們不使用“documentation comments”一詞,而是用Javadoc。

其他的術語說明會偶爾在后面的文檔出現。

1.2 指南說明

本文檔中的示例代碼并不作為規范。也就是說,雖然示例代碼是遵循Google編程風格,但并不意味著這是展現這些代碼的唯一方式。 示例中的格式選擇不應該被強制定為規則。

源文件基礎

2.1 文件名

源文件以其最頂層的類名來命名,大小寫敏感,文件擴展名為.java。

2.2 文件編碼:UTF-8

源文件編碼格式為UTF-8。

2.3 特殊字符

2.3.1 空白字符

除了行結束符序列,ASCII水平空格字符(0×20,即空格)是源文件中唯一允許出現的空白字符,這意味著:

  1. 所有其它字符串中的空白字符都要進行轉義。

  2. 制表符不用于縮進。

2.3.2 特殊轉義序列

對于具有特殊轉義序列的任何字符(\b, \t, \n, \f, \r, “, ‘及\),我們使用它的轉義序列,而不是相應的八進制(比如\012)或Unicode(比如\u000a)轉義。

2.3.3 非ASCII字符

對于剩余的非ASCII字符,是使用實際的Unicode字符(比如∞),還是使用等價的Unicode轉義符(比如\u221e),取決于哪個能讓代碼更易于閱讀和理解。

Tip: 在使用Unicode轉義符或是一些實際的Unicode字符時,建議做些注釋給出解釋,這有助于別人閱讀和理解。

例如:

1
2
3
4
5
String unitAbbrev = "μs";                                 | 贊,即使沒有注釋也非常清晰
String unitAbbrev = "\u03bcs"; // "μs"                    | 允許,但沒有理由要這樣做
String unitAbbrev = "\u03bcs"; // Greek letter mu, "s"    | 允許,但這樣做顯得笨拙還容易出錯
String unitAbbrev = "\u03bcs";                            | 很糟,讀者根本看不出這是什么
return '\ufeff' + content; // byte order mark             | Good,對于非打印字符,使用轉義,并在必要時寫上注釋

Tip: 永遠不要由于害怕某些程序可能無法正確處理非ASCII字符而讓你的代碼可讀性變差。當程序無法正確處理非ASCII字符時,它自然無法正確運行, 你就會去fix這些問題的了。(言下之意就是大膽去用非ASCII字符,如果真的有需要的話)

源文件結構

一個源文件包含(按順序地):

  1. 許可證或版權信息(如有需要)

  2. package語句

  3. import語句

  4. 一個頂級類(只有一個)

以上每個部分之間用一個空行隔開。

3.1 許可證或版權信息

如果一個文件包含許可證或版權信息,那么它應當被放在文件最前面。

3.2 package語句

package語句不換行,列限制(4.4節)并不適用于package語句。(即package語句寫在一行里)

3.3 import語句

3.3.1 import不要使用通配符

即,不要出現類似這樣的import語句:import java.util.*;

3.3.2 不要換行

import語句不換行,列限制(4.4節)并不適用于import語句。(每個import語句獨立成行)

3.3.3 順序和間距

import語句可分為以下幾組,按照這個順序,每組由一個空行分隔:

  1. 所有的靜態導入獨立成組

  2. com.google imports(僅當這個源文件是在com.google包下)

  3. 第三方的包。每個頂級包為一組,字典序。例如:android, com, junit, org, sun

  4. java imports

  5. javax imports

組內不空行,按字典序排列。

3.4 類聲明

3.4.1 只有一個頂級類聲明

每個頂級類都在一個與它同名的源文件中(當然,還包含.java后綴)。

例外:package-info.java,該文件中可沒有package-info類。

3.4.2 類成員順序

類的成員順序對易學性有很大的影響,但這也不存在唯一的通用法則。不同的類對成員的排序可能是不同的。 最重要的一點,每個類應該以某種邏輯去排序它的成員,維護者應該要能解釋這種排序邏輯。比如, 新的方法不能總是習慣性地添加到類的結尾,因為這樣就是按時間順序而非某種邏輯來排序的。

3.4.2.1 重載:永不分離

當一個類有多個構造函數,或是多個同名方法,這些函數/方法應該按順序出現在一起,中間不要放進其它函數/方法。

來源:importnew

上一篇: Java EE供應商和倫敦Java用戶組宣布新的MicroProfile

下一篇: INTELLIJ IDEA 2016.3 PREVIEW 發布

分享到: 更多
北京塞车pk10分析软件 鑫宝国娱乐pt游戏平台 福彩双色球预测 七乐彩票平台可靠吗 澳门博彩游戏 赛车大小单双怎么看 后三组选包胆为什么只能买一个号 双色球普通投注摇一摇 玩龙虎合怎么稳赚 重庆时彩开奖号码查询 吉林时时票开奖 最好用的彩票计划软件下载 猜大小无敌版 重庆彩开奖号码官方 聚富百视下载 大乐透50期走势图