Java黑科技之通過Google Java Style 文件配置IDEA和Ecplise代碼風格
一、引言
每一個公司,團隊的代碼風格可能都不一樣,隻要團隊內有自己統一的風格就好。接下來,介紹Google Java 代碼風格,並且如何在IDEA和Ecplise兩種比較流行的Java集成開發環境中配置Google Java 代碼風格。
如果不看google代碼風格詳細介紹的,可以下拉到最後查看 IDEA 和 Ecplise 配置 Google Java Style 教程和 Google Java Style 文件下載。
二、Google Java Style 介紹
2.1 源文件基礎
文件名
Java源文件名區分大小寫的,並且首字母大寫,以.java
擴展名結束。
文件編碼
Java源文件編碼格式為UTF-8。
特殊字符
- 空格字符:除瞭行結束符之外,ASCII水平空格字符(0x20)是唯一出現在源文件中任何地方的空格字符。這也意味著,字符串和字符文字中的所有其他空白字符均被轉義。制表符不用於縮進。
- 特殊的轉義序列:所有轉義序列 (\ b, \ t, \ n, \ f, \ r, \ “, \ ‘ 和 \\),不是八進制(例如 \ 012)或Unicode(例如 \ u000a)的轉義。
- 非ASCII字符:對於其餘的非ASCII字符,則使用實際的Unicode字符(例如∞)或等效的Unicode轉義符(例如 \ u221e)。用哪種取決於使代碼更易於閱讀和理解,盡管Unicode會在字符串文字之外進行轉義,但是不建議不在註釋中使用。例如
String unitAbbrev = "μs"
,沒必要寫成String unitAbbrev = "\u03bcs"
。
2.2 源文件結構
一個Java源文件,按以下順序組成,並且每個部分空一行分隔開:
1.許可或版權信息(如果有)
2.Package語句,並且不換行的
3.Import語句,最後不要使用通配符導入,無論是靜態導入還是其他方式;每一行導入語句都是不換行的;所有靜態導入都在一個塊中,所有非靜態導入也在同一個塊中,塊之間用一空白行分隔開;在每個塊中,導入的名稱均按ASCII排序順序顯示。
4.頂級類定義
每一個頂級類都應該在一個單獨的源文件中,對於一個類中的內容,最好是有意識地對類中的內容按某種規則排序排版,例如新的方法一般添加在類的尾部,這樣我們可以根據時間線索瞭解這些方法何時加進來的;再比如,當一個類具有多個構造函數或多個具有相同名稱的方法時,它們將順序出現,並且它們之間沒有其他代碼(甚至沒有私有成員)。
2.3 格式化
前提須知,下文中提及的塊狀結構是指類的主體,方法或構造函數。
花括號
if,else,for,do,while 等語句塊使用花括號,即使花括號內容是空的或者隻有一行語句。
對於內容非空的花括號塊,遵循以下規則:
左括號前不換行
左括號後換行
右括號前換行
右括號後換行,如方法塊,構造函數,類的主體括號情況下才換行。有些整體搭配不換行,例如esle前面的右括號,try塊的右括號等。
return () -> { while (condition()) { method(); } }; return new MyClass() { @Override public void method() { if (condition()) { try { something(); } catch (Exception e) { recover(); } } else if (otherCondition()) { somethingElse(); } else { lastThing(); } } };
對於一些空內容的塊,以下兩種方式都可接受:
void doNothing() {} void doNothingElse() { }
縮進
關於一些塊結構等的縮進,建議2個空格,並且註釋也最好和代碼縮進保持一致。
每行一個聲明
每個語句後都有一個換行符,不要將多行語句都寫在同一行。
列數限制
Java代碼的列數限制為100個字符,一個字符是指一個Unicode字符。除非另有說明,否則超出該限制的任何行都必須進行換行。
不過也有一些例外可以超過此限制,例如:
- Javadoc中的長URL或長的JSNI方法引用
- package和import語句
- 註釋中的命令行,因為可能需要將其拷貝到shell中執行
不要水平對齊
水平對齊是在下一行的代碼中添加一些空格,致使與上一行的某個標識符對齊。語法允許這樣做,但是不推薦,因為後續可能會載修改代碼,可能導致不再對齊,然後再對齊的話需要浪費額外的時間精力。
// 這是推薦的,按正常的一個空格即可 private int x; private Color color; // color和x對齊,沒必要 private int x; private Color color;
枚舉類
如果一個枚舉常量有方法或者註釋,在每個枚舉常量的逗號後面,最好換一行再定義下一個枚舉常量。
private enum Answer { YES { @Override public String toString() { return "yes"; } }, NO, MAYBE }
如果一個枚舉常量沒有有方法或者註釋,則可以不換行。
private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }
變量聲明
每個變量聲明語句隻聲明一個變量,不要使用 int a, b;
這種多變量的聲明。但是for循環
的頭部中可以接受多個變量聲明 。
需要時才聲明,不要在代碼塊的開頭就聲明局部變量,而是應該在靠近使用局部變量的地方聲明它們,以最小化它們的作用域。局部變量應該聲明的時候就進行初始化,或者聲明後,要立即初始化。
數組
[]方括號應該是類型的一部分,而不是變量,所以應該使用String[] args
,而不是 String args[]
。
Switch語句
在Switch代碼塊內,如果一個case小代碼塊直接穿透到下一個case(例如沒有以break,continue,return或者拋異常結尾),則需要在最後一個case後面註釋說明原因;最後一定要寫default塊,即使沒有執行任何代碼,但是如果switch的是枚舉類型,並且case列出所有的枚舉值瞭,可以不用寫default。
switch (input) { case 1: case 2: prepareOneOrTwo(); // 這裡說明為什麼穿透,case1和case2的情況下也要執行case3的內容 case 3: handleOneTwoOrThree(); break; default: handleLargeNumber(input); }
修飾符
類或者成員變量的定義使用修飾符時,按以下順序進行修飾。
public protected private abstract default static final transient volatile synchronized native strictfp
字面量
long類型的值,數字後面加大寫的L,禁止使用小寫的l,因為l和1很像,容易誤導。例如300000L而不是300000l。
三、標識符命名規則
package命名規則
package的包名全部小寫,而且不要出現下劃線(_),例如使用com.nobody.chenpi
,而不是com.nobody.chenPi
或者com.nobody.chen_pi
。
類命名規則
類名遵循UpperCamelCase規則,即大寫字母開頭的駝峰規則。類名使用名詞或者名稱短語,例如Person,GoodPerson。接口使用名稱或者名稱短語,有時也可以使用形容詞或者形容詞短語,例如Readable。
測試類名字以需要測試的類的名字開頭,並且以Test
結尾,例如HashTest 。
方法命名規則
方法命名遵循lowerCamelCase規則,即小寫字母開頭的駝峰規則。方法名詞使用動詞或者動詞短語,例如sendMessage。
常量命名規則
常量名稱全部大寫,並且單詞之間用下劃線分隔開。
private static final Long MAX_NUM = 10000L;
還有需要Google代碼風格規則就不一一講解瞭,感興趣的可以到google官方查看。
IDEA 配置 Google Java Style
點擊File(文件)–> Setting(設置) –> Editor(編輯) –> Code Style(代碼風格),然後再點擊Scheme右邊的設置按鈕,Import Scheme,IntelliJ IDEA code style xml。最後選中本地下載好的xml文件。
然後為選中導入的主題取個名稱,在最上面Scheme選項選中我們的主題確定即可。
然後我們在使用IDEA開發代碼過程中,使用快捷鍵(默認是ctrl + alt + L,也可以修改設置這個快捷鍵),即可按google風格進行格式化代碼。
package com.nobody.exception; import lombok.Getter; /** * @Description 自定義通用異常枚舉類 * @Author Mr.nobody * @Date 2020/10/23 * @Version 1.0 */ @Getter public enum CommonErrorEnum implements BaseErrorInfo { /** * 成功 */ SUCCESS("200", "成功!"), /** * 請求的數據格式不符! */ BODY_NOT_MATCH("400", "請求的數據格式不符!"), /** * 未找到該資源! */ NOT_FOUND("404", "未找到該資源!"), /** * 服務器內部錯誤! */ INTERNAL_SERVER_ERROR("500", "服務器內部錯誤!"), /** * 服務器正忙,請稍後再試! */ SERVER_BUSY("503", "服務器正忙,請稍後再試!"); private String errorCode; private String errorMsg; CommonErrorEnum(String errorCode, String errorMsg) { this.errorCode = errorCode; this.errorMsg = errorMsg; } }
四、Ecplise 配置 Google Java Style
路徑:Window – Preferences – Java – Code Style – Formatter – Import,然後導入xml文件,最後選擇GoogleStyle,保存即可。
到此這篇關於Java黑科技之通過Google Java Style 文件配置IDEA和Ecplise代碼風格的文章就介紹到這瞭,更多相關配置IDEA和Ecplise代碼風格內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java switch支持的數據類型詳解
- 一篇文章帶你瞭解JAVA結構化編程詳情
- 一篇文章帶你入門java面向對象
- Java中Pattern.compile函數的使用詳解
- Java日常練習題,每天進步一點點(59)