Java開發中基本命名規範

Java命名規範

  • 每個概念一個詞
CRUD操作 方法名約定
新增 create
添加 add
刪除 remove
修改 update
查詢(單個結果) get
查詢(多個結果) list
分頁查詢 page
統計 count
  • 嚴格使用對仗詞

add -> remove

increment -> decrement

open -> close

begin -> end

insert -> delete

show -> hide

create -> destroy

lock -> unlock

source -> target

fist -> last

min -> max

start -> stop

get -> set

next -> previous

up -> down

old - > new

recovery -> cancel

pass -> reject

  • 使用後置限制詞

程序中好多表示計算結果的變量,例如:總額、平均值、最大值等。

如果用類似Total、Sum、Average、Max、Min這樣的詞來修改某個命名,記住要把限定詞加到名字的最後,並在項目中貫徹執行,保持命名風格前後一致。

總收入: revenueTotal

總人數:peopleTotal

這種命名的優點,首先,變量名中最重要的部分,就是這一變量賦予主要含義的部分應該放在最前面,可以突出顯示,並且被首先閱讀到,其次,可以避免同時在程序裏出現使用totalRevence和revenueTotal而產生的歧義。

推薦使用限定詞後置原則,保持代碼的優雅,需要注意Num限定詞,放在變量名結束位置表示一個下標作用,customerNum表示是客戶的序號,突出的Num這個詞意,爲了避免Num帶來的和上面規則衝突的問題

推薦使用Count和Total來表示總數,用Id表示序號,不用Num,這樣customerCount就表示客戶總數,customerId表示客戶的編號。

  • 統一業務語言

    這個是因爲如果你和業務方討論的是一種編程語言,而設計圖時使用另一種語言,程序員編寫的代碼又體現出來的是隨意翻譯、毫無章法的內容,這無疑會降低代碼的可讀性,導致業務、文檔、架構圖、代碼之間不一致問題

    統一業務的語言就是爲了在團隊中交流,建模、代碼、文檔的都完全一致,這個也是領域驅動設計的重要概念。

    例如:業務方交流中,都把推送模塊中的一個功能叫 消息轉發中心,那麼在後面設計 文檔 編碼也要一致

    這個最好有業務來統一制定。

  • 統一技術語言

    有些技術語言是通用的,業內人都清楚理解其意思,我們應該儘量使用這些術語來進行命名,這些通用技術語言包括 DO 、DAO、DTO、Service、ServiceImpl、Componet、Repository等,例如在代碼中看到OrderDO 和 OrderDAO 馬上就能知道OrderDO中的屬性就是數據庫中的Order字段,對Order表進行操作的都在OrderDAO裏面。

  • 自明的代碼,無需註釋

    良好的代碼命名可以就是最好的註釋,一般要求註釋量在20%~30%,也只是對特別複雜的邏輯需要解釋。要想達到代碼就是文檔這個目的,前提必須是其具備很好的可讀性和自明性。所謂的自明性就是在不借助其他輔助註釋的情況下,代碼本身能向讀者清楚表達自身的含義纔行。

  • 中間變量

    我們可以通過添加中間變量讓代碼變得更自明,就是將計算過程打散成多個步驟。並用有意義的變量名來命名這些中間變量,從而把隱藏的計算過程已顯性化的方式表達出來。

    例如:我們通過Regex來獲取字符串中的值,並放到map中。

    Matcher matcher = headerPattern.matcher(line);
    if(matcher.find()){
        headers.put(matcher.group(1),matcher.group(2))
    }
    
    用中間變量,可以寫成如下形式:
    
    Matcher matcher = headerPattern.matcher(line);
    if(matcher.find()){
        String key = matcher.group(1);
        String value = matcher.group(2);
        headers.put(key,value);
    }
    

    中間變量的這種簡單使用,可以顯性的表達了第一個匹配組是key,第二個匹配組是value,代碼更清晰。

    只有把計算過程打散成一系列命名良好的中間值,不透明的語義也會變得透明。

  • 設計模式語言

    使用設計模式也是代碼自明性的重要手段,在技術人員之間使用設計模式語言可以提高溝通效率。當然,前提是大家都理解熟悉設計模式。

    我們有必要在代碼上體現使用到的設計模式,這樣閱讀代碼的人能很快領會設計者的意圖。

    例如:Spring裏面ApplicationListener就體現了它的設計和用處。通過命名就知道使用觀察者模式,每一個註冊的ApplicationListener在Application狀態發生變化時,都會收到一個notify。這樣我們就可以在容器初始化之後進行一些業務操作,比如:加載數據,初始化緩存。

    有比如在進行郵件營銷系統中,要根據一些規則來過濾一些客戶,像沒有郵箱地址的客戶,沒有訂閱關係的客戶,3天內不能重複發郵件的客戶等。

    在SpringMVC的DispatchServlet這個類中使用到了HandlerExecutionChain這個類,使用責任鏈模式,Chain表達的是責任鏈模式,HandlerExecution表示用來進行處理執行的邏輯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章