国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Java黑科技之通過(guò)Google Java Style 文件配置IDEA和Ec

發(fā)布時(shí)間:2021-07-06 11:13 來(lái)源:腳本之家 閱讀:0 作者:陳皮的JavaLib 欄目: 開(kāi)發(fā)技術(shù) 歡迎投稿:712375056

目錄

      一、引言

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

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

      二、Google Java Style 介紹

      2.1 源文件基礎

      文件名

      Java源文件名區分大小寫(xiě)的,并且首字母大寫(xiě),以.java擴展名結束。

      文件編碼

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

      特殊字符

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

      2.2 源文件結構

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

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

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

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

      4.頂級類(lèi)定義

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

      2.3 格式化

      前提須知,下文中提及的塊狀結構是指類(lèi)的主體,方法或構造函數。

      花括號

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

      對于內容非空的花括號塊,遵循以下規則:

      左括號前不換行

      左括號后換行

      右括號前換行

      右括號后換行,如方法塊,構造函數,類(lèi)的主體括號情況下才換行。有些整體搭配不換行,例如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() {
        }

      縮進(jìn)

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

      每行一個(gè)聲明

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

      列數限制

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

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

      • Javadoc中的長(cháng)URL或長(cháng)的JSNI方法引用
      • package和import語(yǔ)句
      • 注釋中的命令行,因為可能需要將其拷貝到shell中執行

      不要水平對齊

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

      // 這是推薦的,按正常的一個(gè)空格即可
      private int x;
      private Color color;
      
      // color和x對齊,沒(méi)必要
      private int   x;
      private Color color;

      枚舉類(lèi)

      如果一個(gè)枚舉常量有方法或者注釋?zhuān)诿總€(gè)枚舉常量的逗號后面,最好換一行再定義下一個(gè)枚舉常量。

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

      如果一個(gè)枚舉常量沒(méi)有有方法或者注釋?zhuān)瑒t可以不換行。

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

      變量聲明

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

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

      數組

      []方括號應該是類(lèi)型的一部分,而不是變量,所以應該使用String[] args,而不是 String args[]。

      Switch語(yǔ)句

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

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

      修飾符

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

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

      字面量

      long類(lèi)型的值,數字后面加大寫(xiě)的L,禁止使用小寫(xiě)的l,因為l和1很像,容易誤導。例如300000L而不是300000l。

      三、標識符命名規則

      package命名規則

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

      類(lèi)命名規則

      類(lèi)名遵循UpperCamelCase規則,即大寫(xiě)字母開(kāi)頭的駝峰規則。類(lèi)名使用名詞或者名稱(chēng)短語(yǔ),例如Person,GoodPerson。接口使用名稱(chēng)或者名稱(chēng)短語(yǔ),有時(shí)也可以使用形容詞或者形容詞短語(yǔ),例如Readable。

      測試類(lèi)名字以需要測試的類(lèi)的名字開(kāi)頭,并且以Test結尾,例如HashTest 。

      方法命名規則

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

      常量命名規則

      常量名稱(chēng)全部大寫(xiě),并且單詞之間用下劃線(xiàn)分隔開(kāi)。

      private static final Long MAX_NUM = 10000L;

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

      IDEA 配置 Google Java Style

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

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

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

      package com.nobody.exception;
      
      import lombok.Getter;
      
      /**
       * @Description 自定義通用異常枚舉類(lèi)
       * @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", "未找到該資源!"),
        /**
         * 服務(wù)器內部錯誤!
         */
        INTERNAL_SERVER_ERROR("500", "服務(wù)器內部錯誤!"),
        /**
         * 服務(wù)器正忙,請稍后再試!
         */
        SERVER_BUSY("503", "服務(wù)器正忙,請稍后再試!");
      
        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,保存即可。

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

      免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

      麻花豆传媒免费MV网站| 亚洲精品无码7777| 三年电影手机在线观看免费| 67194熟妇在线观看线路1| 精品日产一区二区三区| 97在线 | 亚洲|