乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Java 命名之道

       新進(jìn)小設(shè)計(jì) 2021-06-30

      為什么需要重視命名?

      好的命名即是注釋,別人一看到你的命名就知道你的變量、方法或者類是做什么的! 好的命名對于其他人(包括你自己)理解你的代碼有著很大的幫助!

      簡單舉個(gè)例子說明一下命名的重要性。

      《Clean Code》這本書明確指出:

      好的代碼本身就是注釋,我們要盡量規(guī)范和美化自己的代碼來減少不必要的注釋。

      若編程語言足夠有表達(dá)力,就不需要注釋,盡量通過代碼來闡述。

      舉個(gè)例子:

      去掉下面復(fù)雜的注釋,只需要?jiǎng)?chuàng)建一個(gè)與注釋所言同一事物的函數(shù)即可

      // check to see if the employee is eligible for full benefits
      if ((employee.flags & HOURLY_FLAG) && (employee.age > 65))

      應(yīng)替換為

      if (employee.isEligibleForFullBenefits())

       

      常見命名規(guī)則以及適用場景

      這里只介紹 3 種最常見的命名規(guī)范。

      駝峰命名法(CamelCase)

      駝峰命名法應(yīng)該我們最常見的一個(gè),這種命名方式使用大小寫混合的格式來區(qū)別各個(gè)單詞,并且單詞之間不使用空格隔開或者連接字符連接的命名方式

      大駝峰命名法(CamelCase)

      類名需要使用大駝峰命名法(UpperCamelCase)

      正例:

      ServiceDiscovery、ServiceInstance、LruCacheFactory

       

      反例:

      serviceDiscovery、Serviceinstance、LRUCacheFactory

       

      小駝峰命名法(lowerCamelCase)

      方法名、參數(shù)名、成員變量、局部變量需要使用小駝峰命名法(lowerCamelCase)。

      正例:

      getUserInfo()、createCustomThreadPool()、setNameFormat(String nameFormat)
      Uservice userService;

       

      反例:

      GetUserInfo()、CreateCustomThreadPool()、setNameFormat(String NameFormat)
      Uservice user_service

       

      蛇形命名法(snake_case)

      測試方法名、常量、枚舉名稱需要使用蛇形命名法(snake_case)

      在蛇形命名法中,各個(gè)單詞之間通過下劃線“_”連接,比如should_get_200_status_code_when_request_is_validCLIENT_CONNECT_SERVER_FAILURE。

      蛇形命名法的優(yōu)勢是命名所需要的單詞比較多的時(shí)候,比如我把上面的命名通過小駝峰命名法給大家看一下:“shouldGet200StatusCodoWhenRequestIsValid”。感覺如何? 相比于使用蛇形命名法(snake_case)來說是不是不那么易讀?**

      正例:

      @Test
      void should_get_200_status_code_when_request_is_valid() {
        ......
      }

       

      反例:

      @Test
      void shouldGet200StatusCodoWhenRequestIsValid() {
        ......
      }

       

      串式命名法(kebab-case)

      在串式命名法中,各個(gè)單詞之間通過下劃線“-”連接,比如dubbo-registry

      建議項(xiàng)目文件夾名稱使用串式命名法(kebab-case),比如 dubbo 項(xiàng)目的各個(gè)模塊的命名是下面這樣的。

      常見命名規(guī)范

      Java 語言基本命名規(guī)范

      1.類名需要使用大駝峰命名法(UpperCamelCase)風(fēng)格。方法名、參數(shù)名、成員變量、局部變量需要使用小駝峰命名法(lowerCamelCase)。

      2.測試方法名、常量、枚舉名稱需要使用蛇形命名法(snake_case),比如should_get_200_status_code_when_request_is_valid、CLIENT_CONNECT_SERVER_FAILURE。并且,測試方法名稱要求全部小寫,常量以及枚舉名稱需要全部大寫。

      3.項(xiàng)目文件夾名稱使用串式命名法(kebab-case),比如dubbo-registry。

      4.包名統(tǒng)一使用小寫,盡量使用單個(gè)名詞作為包名,各個(gè)單詞通過 "." 分隔符連接,并且各個(gè)單詞必須為單數(shù)。

      正例: org.apache.dubbo.common.threadlocal

      反例: org.apache.dubbo.common.threadLocal

      5.抽象類命名使用 Abstract 開頭。

      //為遠(yuǎn)程傳輸部分抽象出來的一個(gè)抽象類(出處:Dubbo源碼)
      public abstract class AbstractClient extends AbstractEndpoint implements Client {
      
      }

       

      6.異常類命名使用 Exception 結(jié)尾。

      //自定義的 NoSuchMethodException(出處:Dubbo源碼)
      public class NoSuchMethodException extends RuntimeException {
          private static final long serialVersionUID = -2725364246023268766L;
      
          public NoSuchMethodException() {
              super();
          }
      
          public NoSuchMethodException(String msg) {
              super(msg);
          }
      }

       

      7.測試類命名以它要測試的類的名稱開始,以 Test 結(jié)尾。

      //為 AnnotationUtils 類寫的測試類(出處:Dubbo源碼)
      public class AnnotationUtilsTest {
        ......
      }

       

      POJO 類中布爾類型的變量,都不要加 is 前綴,否則部分框架解析會(huì)引起序列化錯(cuò)誤。

      如果模塊、接口、類、方法使用了設(shè)計(jì)模式,在命名時(shí)需體現(xiàn)出具體模式。

      命名易讀性規(guī)范

      1.為了能讓命名更加易懂和易讀,盡量不要縮寫/簡寫單詞,除非這些單詞已經(jīng)被公認(rèn)可以被這樣縮寫/簡寫。比如 CustomThreadFactory 不可以被寫成 ~~CustomTF 。

      2.命名不像函數(shù)一樣要盡量追求短,可讀性強(qiáng)的名字優(yōu)先于簡短的名字,雖然可讀性強(qiáng)的名字會(huì)比較長一點(diǎn)。 這個(gè)對應(yīng)我們上面說的第 1 點(diǎn)。

      3.避免無意義的命名,你起的每一個(gè)名字都要能表明意思。

      正例:UserService userService; int userCount;

      反例: UserService service int count

      4.避免命名過長(50 個(gè)字符以內(nèi)最好),過長的命名難以閱讀并且丑陋。

      5.不要使用拼音,更不要使用中文。 注意:像 alibaba 、wuhan、taobao 這種國際通用名詞可以當(dāng)做英文來看待。

      正例:discount

      反例:dazhe

      Codelf:變量命名神器?

      這是一個(gè)由國人開發(fā)的網(wǎng)站,網(wǎng)上有很多人稱其為變量命名神器, Guide 在實(shí)際使用了幾天之后感覺沒那么好用。小伙伴們可以自行體驗(yàn)一下,然后再給出自己的判斷。

      Codelf 提供了在線網(wǎng)站版本,網(wǎng)址:https://unbug./codelf/,具體使用情況如下:

      我選擇了 Java 編程語言,然后搜索了“序列化”這個(gè)關(guān)鍵詞,然后它就返回了很多關(guān)于序列化的命名。

       

       

      并且,Codelf 還提供了 VS code 插件,看這個(gè)評價(jià),看來大家還是很喜歡這款命名工具的。

       

       

       

      總結(jié)

      如下圖所示,涵蓋上面所有重要內(nèi)容的思維導(dǎo)圖,便于小伙伴們?nèi)蘸蟛殚啞?/p>

       

       

      其他推薦閱讀

      1. 《阿里巴巴 Java 開發(fā)手冊》
      2. 《Clean Code》
      3. Google Java 代碼指南:https://google./styleguide/javaguide.html#s5.1-identifier-name
      4. 告別編碼5分鐘,命名2小時(shí)!史上最全的Java命名規(guī)范參考:https://www.cnblogs.com/liqiangchn/p/12000361.html

       

      作者:Snailclimb
      鏈接:Java 命名之道
      來源:github

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多