欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java黑科技之通過(guò)Google Java Style 文件配置IDEA和Ecplise代碼風(fēng)格

 更新時(shí)間:2021年05月13日 16:07:34   作者:陳皮的JavaLib  
在日常開發(fā)中,多人團(tuán)隊(duì)協(xié)作開發(fā)一個(gè)項(xiàng)目是很常見的,特別是大公司,這就會(huì)涉及到多人在一個(gè)工程上開發(fā)代碼.無(wú)規(guī)矩不成方圓,一個(gè)好的代碼風(fēng)格,更加有利于團(tuán)隊(duì)協(xié)作,減少代碼沖突,提高代碼可閱讀性,美觀性.本文就帶著大家仔細(xì)研究這個(gè)黑科技 ,需要的朋友可以參考下

一、引言

每一個(gè)公司,團(tuán)隊(duì)的代碼風(fēng)格可能都不一樣,只要團(tuán)隊(duì)內(nèi)有自己統(tǒng)一的風(fēng)格就好。接下來(lái),介紹Google Java 代碼風(fēng)格,并且如何在IDEA和Ecplise兩種比較流行的Java集成開發(fā)環(huán)境中配置Google Java 代碼風(fēng)格。

如果不看google代碼風(fēng)格詳細(xì)介紹的,可以下拉到最后查看 IDEA 和 Ecplise 配置 Google Java Style 教程和 Google Java Style 文件下載。

二、Google Java Style 介紹

2.1 源文件基礎(chǔ)

文件名

Java源文件名區(qū)分大小寫的,并且首字母大寫,以.java擴(kuò)展名結(jié)束。

文件編碼

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

特殊字符

  • 空格字符:除了行結(jié)束符之外,ASCII水平空格字符(0x20)是唯一出現(xiàn)在源文件中任何地方的空格字符。這也意味著,字符串和字符文字中的所有其他空白字符均被轉(zhuǎn)義。制表符不用于縮進(jìn)。
  • 特殊的轉(zhuǎn)義序列:所有轉(zhuǎn)義序列 (\ b, \ t, \ n, \ f, \ r, \ ", \ ' 和 \\),不是八進(jìn)制(例如 \ 012)或Unicode(例如 \ u000a)的轉(zhuǎn)義。
  • 非ASCII字符:對(duì)于其余的非ASCII字符,則使用實(shí)際的Unicode字符(例如∞)或等效的Unicode轉(zhuǎn)義符(例如 \ u221e)。用哪種取決于使代碼更易于閱讀和理解,盡管Unicode會(huì)在字符串文字之外進(jìn)行轉(zhuǎn)義,但是不建議不在注釋中使用。例如String unitAbbrev = "μs",沒必要寫成String unitAbbrev = "\u03bcs"。

2.2 源文件結(jié)構(gòu)

一個(gè)Java源文件,按以下順序組成,并且每個(gè)部分空一行分隔開:

1.許可或版權(quán)信息(如果有)

2.Package語(yǔ)句,并且不換行的

3.Import語(yǔ)句,最后不要使用通配符導(dǎo)入,無(wú)論是靜態(tài)導(dǎo)入還是其他方式;每一行導(dǎo)入語(yǔ)句都是不換行的;所有靜態(tài)導(dǎo)入都在一個(gè)塊中,所有非靜態(tài)導(dǎo)入也在同一個(gè)塊中,塊之間用一空白行分隔開;在每個(gè)塊中,導(dǎo)入的名稱均按ASCII排序順序顯示。

4.頂級(jí)類定義

每一個(gè)頂級(jí)類都應(yīng)該在一個(gè)單獨(dú)的源文件中,對(duì)于一個(gè)類中的內(nèi)容,最好是有意識(shí)地對(duì)類中的內(nèi)容按某種規(guī)則排序排版,例如新的方法一般添加在類的尾部,這樣我們可以根據(jù)時(shí)間線索了解這些方法何時(shí)加進(jìn)來(lái)的;再比如,當(dāng)一個(gè)類具有多個(gè)構(gòu)造函數(shù)或多個(gè)具有相同名稱的方法時(shí),它們將順序出現(xiàn),并且它們之間沒有其他代碼(甚至沒有私有成員)。

2.3 格式化

前提須知,下文中提及的塊狀結(jié)構(gòu)是指類的主體,方法或構(gòu)造函數(shù)。

花括號(hào)

if,else,for,do,while 等語(yǔ)句塊使用花括號(hào),即使花括號(hào)內(nèi)容是空的或者只有一行語(yǔ)句。

對(duì)于內(nèi)容非空的花括號(hào)塊,遵循以下規(guī)則:

左括號(hào)前不換行

左括號(hào)后換行

右括號(hào)前換行

右括號(hào)后換行,如方法塊,構(gòu)造函數(shù),類的主體括號(hào)情況下才換行。有些整體搭配不換行,例如esle前面的右括號(hào),try塊的右括號(hào)等。

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();
    }
  }
};

對(duì)于一些空內(nèi)容的塊,以下兩種方式都可接受:

void doNothing() {}

  void doNothingElse() {
  }

縮進(jìn)

關(guān)于一些塊結(jié)構(gòu)等的縮進(jìn),建議2個(gè)空格,并且注釋也最好和代碼縮進(jìn)保持一致。

每行一個(gè)聲明

每個(gè)語(yǔ)句后都有一個(gè)換行符,不要將多行語(yǔ)句都寫在同一行。

列數(shù)限制

Java代碼的列數(shù)限制為100個(gè)字符,一個(gè)字符是指一個(gè)Unicode字符。除非另有說(shuō)明,否則超出該限制的任何行都必須進(jìn)行換行。

不過(guò)也有一些例外可以超過(guò)此限制,例如:

  • Javadoc中的長(zhǎng)URL或長(zhǎng)的JSNI方法引用
  • package和import語(yǔ)句
  • 注釋中的命令行,因?yàn)榭赡苄枰獙⑵淇截惖絪hell中執(zhí)行

不要水平對(duì)齊

水平對(duì)齊是在下一行的代碼中添加一些空格,致使與上一行的某個(gè)標(biāo)識(shí)符對(duì)齊。語(yǔ)法允許這樣做,但是不推薦,因?yàn)楹罄m(xù)可能會(huì)載修改代碼,可能導(dǎo)致不再對(duì)齊,然后再對(duì)齊的話需要浪費(fèi)額外的時(shí)間精力。

// 這是推薦的,按正常的一個(gè)空格即可
private int x;
private Color color;

// color和x對(duì)齊,沒必要
private int   x;
private Color color;

枚舉類

如果一個(gè)枚舉常量有方法或者注釋,在每個(gè)枚舉常量的逗號(hào)后面,最好換一行再定義下一個(gè)枚舉常量。

private enum Answer {
  YES {
    @Override public String toString() {
      return "yes";
    }
  },
  NO,
  MAYBE
}

如果一個(gè)枚舉常量沒有有方法或者注釋,則可以不換行。

private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }

變量聲明

每個(gè)變量聲明語(yǔ)句只聲明一個(gè)變量,不要使用 int a, b;這種多變量的聲明。但是for循環(huán)的頭部中可以接受多個(gè)變量聲明 。

需要時(shí)才聲明,不要在代碼塊的開頭就聲明局部變量,而是應(yīng)該在靠近使用局部變量的地方聲明它們,以最小化它們的作用域。局部變量應(yīng)該聲明的時(shí)候就進(jìn)行初始化,或者聲明后,要立即初始化。

數(shù)組

[]方括號(hào)應(yīng)該是類型的一部分,而不是變量,所以應(yīng)該使用String[] args,而不是 String args[]。

Switch語(yǔ)句

在Switch代碼塊內(nèi),如果一個(gè)case小代碼塊直接穿透到下一個(gè)case(例如沒有以break,continue,return或者拋異常結(jié)尾),則需要在最后一個(gè)case后面注釋說(shuō)明原因;最后一定要寫default塊,即使沒有執(zhí)行任何代碼,但是如果switch的是枚舉類型,并且case列出所有的枚舉值了,可以不用寫default。

switch (input) {
  case 1:
  case 2:
    prepareOneOrTwo();
    // 這里說(shuō)明為什么穿透,case1和case2的情況下也要執(zhí)行case3的內(nèi)容
  case 3:
    handleOneTwoOrThree();
    break;
  default:
    handleLargeNumber(input);
}

修飾符

類或者成員變量的定義使用修飾符時(shí),按以下順序進(jìn)行修飾。

public protected private abstract default static final transient volatile synchronized native strictfp

字面量

long類型的值,數(shù)字后面加大寫的L,禁止使用小寫的l,因?yàn)閘和1很像,容易誤導(dǎo)。例如300000L而不是300000l。

三、標(biāo)識(shí)符命名規(guī)則

package命名規(guī)則

package的包名全部小寫,而且不要出現(xiàn)下劃線(_),例如使用com.nobody.chenpi,而不是com.nobody.chenPi 或者com.nobody.chen_pi。

類命名規(guī)則

類名遵循UpperCamelCase規(guī)則,即大寫字母開頭的駝峰規(guī)則。類名使用名詞或者名稱短語(yǔ),例如Person,GoodPerson。接口使用名稱或者名稱短語(yǔ),有時(shí)也可以使用形容詞或者形容詞短語(yǔ),例如Readable。

測(cè)試類名字以需要測(cè)試的類的名字開頭,并且以Test結(jié)尾,例如HashTest 。

方法命名規(guī)則

方法命名遵循lowerCamelCase規(guī)則,即小寫字母開頭的駝峰規(guī)則。方法名詞使用動(dòng)詞或者動(dòng)詞短語(yǔ),例如sendMessage。

常量命名規(guī)則

常量名稱全部大寫,并且單詞之間用下劃線分隔開。

private static final Long MAX_NUM = 10000L;

還有需要Google代碼風(fēng)格規(guī)則就不一一講解了,感興趣的可以到google官方查看。

IDEA 配置 Google Java Style

點(diǎn)擊File(文件)–> Setting(設(shè)置) –> Editor(編輯) –> Code Style(代碼風(fēng)格),然后再點(diǎn)擊Scheme右邊的設(shè)置按鈕,Import Scheme,IntelliJ IDEA code style xml。最后選中本地下載好的xml文件。

在這里插入圖片描述

然后為選中導(dǎo)入的主題取個(gè)名稱,在最上面Scheme選項(xiàng)選中我們的主題確定即可。

在這里插入圖片描述

然后我們?cè)谑褂肐DEA開發(fā)代碼過(guò)程中,使用快捷鍵(默認(rèn)是ctrl + alt + L,也可以修改設(shè)置這個(gè)快捷鍵),即可按google風(fēng)格進(jìn)行格式化代碼。

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", "成功!"),
  /**
   * 請(qǐng)求的數(shù)據(jù)格式不符!
   */
  BODY_NOT_MATCH("400", "請(qǐng)求的數(shù)據(jù)格式不符!"),
  /**
   * 未找到該資源!
   */
  NOT_FOUND("404", "未找到該資源!"),
  /**
   * 服務(wù)器內(nèi)部錯(cuò)誤!
   */
  INTERNAL_SERVER_ERROR("500", "服務(wù)器內(nèi)部錯(cuò)誤!"),
  /**
   * 服務(wù)器正忙,請(qǐng)稍后再試!
   */
  SERVER_BUSY("503", "服務(wù)器正忙,請(qǐng)稍后再試!");

  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,然后導(dǎo)入xml文件,最后選擇GoogleStyle,保存即可。

在這里插入圖片描述

到此這篇關(guān)于Java黑科技之通過(guò)Google Java Style 文件配置IDEA和Ecplise代碼風(fēng)格的文章就介紹到這了,更多相關(guān)配置IDEA和Ecplise代碼風(fēng)格內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 添加超鏈接到 Word 文檔方法詳解

    Java 添加超鏈接到 Word 文檔方法詳解

    這篇文章主要介紹了Java 添加超鏈接到 Word 文檔方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解Thymeleaf的三種循環(huán)遍歷方式

    詳解Thymeleaf的三種循環(huán)遍歷方式

    Thymeleaf?是一款用于渲染?XML/XHTML/HTML5?內(nèi)容的模板引擎。本文為大家總結(jié)了Thymeleaf的三種循環(huán)遍歷方式,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • 搜索一文入門ElasticSearch(節(jié)點(diǎn) 分片 CRUD 倒排索引 分詞)

    搜索一文入門ElasticSearch(節(jié)點(diǎn) 分片 CRUD 倒排索引 分詞)

    這篇文章主要為大家介紹了搜索一文入門ElasticSearch(節(jié)點(diǎn) 分片 CRUD 倒排索引 分詞)的基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • java實(shí)現(xiàn)插入排序算法

    java實(shí)現(xiàn)插入排序算法

    插入排序算法是一個(gè)對(duì)少量元素進(jìn)行排序的有效算法。插入排序的工作原理與打牌時(shí)整理手中的牌的做法類似,開始摸牌時(shí),我們的左手是空的,接著一次從桌上摸起一張牌,并將它插入到左手的正確位置。
    2015-04-04
  • 使用Spring Boot實(shí)現(xiàn)操作數(shù)據(jù)庫(kù)的接口的過(guò)程

    使用Spring Boot實(shí)現(xiàn)操作數(shù)據(jù)庫(kù)的接口的過(guò)程

    本文給大家分享使用Spring Boot實(shí)現(xiàn)操作數(shù)據(jù)庫(kù)的接口的過(guò)程,包括springboot原理解析及實(shí)例代碼詳解,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Java編程用棧來(lái)求解漢諾塔問題的代碼實(shí)例(非遞歸)

    Java編程用棧來(lái)求解漢諾塔問題的代碼實(shí)例(非遞歸)

    這篇文章主要介紹了Java編程用棧來(lái)求解漢諾塔問題的代碼實(shí)例(非遞歸),具有一定參考價(jià)值,這里給大家分享下,供朋友們參考。
    2017-10-10
  • java  HttpServletRequest和HttpServletResponse詳解

    java HttpServletRequest和HttpServletResponse詳解

    這篇文章主要介紹了java HttpServletRequest和HttpServletResponse詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理

    SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理

    這篇文章主要介紹了詳解SpringBoot自動(dòng)配置原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Java中的遞增i++與++i的實(shí)現(xiàn)原理詳解

    Java中的遞增i++與++i的實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了Java中的i++與++i的實(shí)現(xiàn)原理詳解,在Java中,i++是一種常見的遞增操作符,用于將變量i的值增加1,它是一種簡(jiǎn)潔且方便的方式來(lái)實(shí)現(xiàn)循環(huán)和計(jì)數(shù)功能,i++可以用于各種情況,本文來(lái)看一下其實(shí)現(xiàn)原理,需要的朋友可以參考下
    2023-10-10
  • SpringCloud如何搭建一個(gè)多模塊項(xiàng)目

    SpringCloud如何搭建一個(gè)多模塊項(xiàng)目

    這篇文章主要介紹了SpringCloud如何搭建一個(gè)多模塊項(xiàng)目,記錄下使用SpringCloud創(chuàng)建多模塊項(xiàng)目,一步一步記錄搭建的過(guò)程,感興趣的可以了解一下
    2021-05-05

最新評(píng)論