日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】命名规范

發布時間:2024/1/8 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】命名规范 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Java總體命名規范

類一般采用大駝峰命名,方法和局部變量使用小駝峰命名,而大寫下劃線命名通常是常量和枚舉中使用。

創建一個項目之后,子類中的東西命名規范如下:

  • 項目名全部小寫,多個單詞中間用-連接
  • 包名全部小寫
  • 類名首字母大寫,其余組成詞首字母依次大寫(大駝峰命名)
  • 變量名方法名首字母小寫,其余組成詞的首字母都要大寫(小駝峰命名)
  • 常量名全部大寫,多個單詞中間用_連接

所有命名規則必須遵循Java本身的規則:

  • 名稱只能由字母、數字、下劃線、$符號組成
  • 不能以數字開頭
  • 名稱不能使用Java中的關鍵字
  • 堅決不允許出現中文及拼音命名
類型約束舉例
項目名全部小寫,多個單詞用中劃線【-】分隔spring-cloud
包名全部小寫com.company
類名單詞首字母大寫,其余組成詞首字母依次大寫(大駝峰命名)PaintFigure
變量名首字母小寫,多個單詞組成時,除首個單詞,其他單詞首字母都要大寫password、userName
常量名全部大寫,多個單詞,用【_】分隔EXAM_TIME
方法名首字母小寫,其余組成詞的首字母都要大寫(小駝峰命名)createExam

二、Java包名命名規范

包名統一使用小寫點分隔符之間有且僅有一個自然語義的英文單詞或者多個單詞自然連接到一塊(如 springframework,deepspace不需要使用任何分割)。

包名統一使用單數形式,如果類命有復數含義,則可以使用復數形式。

包名的構成可以分為以下幾四部分【前綴】【發起者名】【項目名】【模塊名】。常見的前綴可以分為以下幾種:

前綴名例含義
indi(或onem )indi.發起者名.項目名.模塊名.……個體項目,指個人發起,但非自己獨自完成的項目,可公開或私有項目,copyright主要屬于發起者。
perspers.個人名.項目名.模塊名.……個人項目,指個人發起,獨自完成,可分享的項目,copyright主要屬于個人
privpriv.個人名.項目名.模塊名.……私有項目,指個人發起,獨自完成,非公開的私人使用的項目,copyright屬于個人。
teamteam.團隊名.項目名.模塊名.……團隊項目,指由團隊發起,并由該團隊開發的項目,copyright屬于該團隊所有
頂級域名com.公司名.項目名.模塊名.……公司項目,copyright由項目發起的公司所有

三、Java類命名

類名使用大駝峰命名形式,類命通常時名詞或名詞短語,接口名除了用名詞和名詞短語以外,還可以使用形容詞或形容詞短語,如Cloneable,Callable等,表示實現該接口的類有某種功能或能力。對于測試類則以它要測試的類開頭,以Test結尾,如HashMapTest。

對于一些特殊特有名詞縮寫也可以使用全大寫命名,比如XMLHttpRequest,不過筆者認為縮寫三個字母以內都大寫,超過三個字母則按照要給單詞算。這個沒有標準,如阿里巴巴中fastjson用JSONObject作為類命,而google則使用JsonObjectRequest命名,對于這種特殊的縮寫,原則是統一就好。

屬性約束例
抽象類Abstract 或者 Base 開頭BaseUserService
枚舉類Enum 作為后綴GenderEnum
工具類Utils作為后綴StringUtils
異常類Exception結尾RuntimeException
接口實現類接口名+ ImplUserServiceImpl
領域模型相關/DO/DTO/VO/DAO正例:UserDAO 反例: UserDo, UserDao
設計模式相關類Builder,Factory等當使用到設計模式時,需要使用對應的設計模式作為后綴,如ThreadFactory
處理特定功能的Handler,Predicate, Validator表示處理器,校驗器,斷言,這些類工廠還有配套的方法名如handle,predicate,validate
測試類Test結尾UserServiceTest, 表示用來測試UserService類的
MVC分層Controller,Service,ServiceImpl,DAO后綴UserManageController,UserManageDAO

四、Java方法命名規范

方法命名采用小駝峰的形式,首字小寫,往后的每個單詞首字母都要大寫。 和類名不同的是,方法命名一般為動詞或動詞短語,與參數或參數名共同組成動賓短語,即動詞 + 名詞。一個好的函數名一般能通過名字直接獲知該函數實現什么樣的功能。

4.1 返回真偽值的方法

注:Prefix-前綴,Suffix-后綴,Alone-單獨使用

位置單詞意義例
Prefixis對象是否符合期待的狀態isValid
Prefixcan對象能否執行所期待的動作canRemove
Prefixshould調用方執行某個命令或方法是好還是不好,應不應該,或者說推薦還是不推薦shouldMigrate
Prefixhas對象是否持有所期待的數據和屬性hasObservers
Prefixneeds調用方是否需要執行某個命令或方法needsMigrate

4.2 用來檢查的方法

單詞意義例
ensure檢查是否為期待的狀態,不是則拋出異常或返回error codeensureCapacity
validate檢查是否為正確的狀態,不是則拋出異常或返回error codevalidateInputs

4.3 按需求才執行的方法

位置單詞意義例
SuffixIfNeeded需要的時候執行,不需要的時候什么都不做drawIfNeeded
Prefixmight同上mightCreate
Prefixtry嘗試執行,失敗時拋出異常或是返回errorcodetryCreate
SuffixOrDefault嘗試執行,失敗時返回默認值getOrDefault
SuffixOrElse嘗試執行、失敗時返回實際參數中指定的值getOrElse
Prefixforce強制嘗試執行。error拋出異常或是返回值forceCreate, forceStop

4.4 異步相關方法

位置單詞意義例
Prefixblocking線程阻塞方法blockingGetUser
SuffixInBackground執行在后臺的線程doInBackground
SuffixAsync異步方法sendAsync
SuffixSync對應已有異步方法的同步方法sendSync
refix or AlonescheduleJob和Task放入隊列schedule, scheduleJob
Prefix or Alonepost同上postJob
Prefix or Aloneexecute執行異步方法(注:我一般拿這個做同步方法名)execute, executeTask
Prefix or Alonestart同上start, startJob
Prefix or Alonecancel停止異步方法cancel, cancelJob
Prefix or Alonestop同上stop, stopJob

4.5 回調方法

單詞意義例
contains是否持有與指定對象相同的對象contains
add添加addJob
append添加appendJob
insert插入到下標ninsertJob
put添加與key對應的元素putJob
remove移除元素removeJob
enqueue添加到隊列的最末位enqueueJob
dequeue從隊列中頭部取出并移除dequeueJob
push添加到棧頭pushJob
pop從棧頭取出并移除popJob
peek從棧頭取出但不移除peekJob
find尋找符合條件的某物findById

4.6 與數據相關的方法

單詞意義例
create新創建createAccount
new新創建newAccount
from從既有的某物新建,或是從其他的數據新建fromConfig
to轉換toString
update更新既有某物updateAccount
load讀取loadAccount
fetch遠程讀取fetchAccount
delete刪除deleteAccount
remove刪除removeAccount
save保存saveAccount
store保存storeAccount
commit保存commitChange
apply保存或應用applyChange
clear清除數據或是恢復到初始狀態clearAll
reset清除數據或是恢復到初始狀態resetAll

4.7 成對出現的動詞

單詞意義
get獲取set 設置
add 增加remove 刪除
create 創建destory 移除
start 啟動stop 停止
open 打開close 關閉
read 讀取write 寫入
load 載入save 保存
create 創建destroy 銷毀
begin 開始end 結束
backup 備份restore 恢復
import 導入export 導出
split 分割merge 合并
inject 注入extract 提取
attach 附著detach 脫離
bind 綁定separate 分離
view 查看browse 瀏覽
edit 編輯modify 修改
select 選取mark 標記
copy 復制paste 粘貼
undo 撤銷redo 重做
insert 插入delete 移除
add 加入append 添加
clean 清理clear 清除
index 索引sort 排序
find 查找search 搜索
increase 增加decrease 減少
play 播放pause 暫停
launch 啟動run 運行
compile 編譯execute 執行
debug 調試trace 跟蹤
observe 觀察listen 監聽
build 構建publish 發布
input 輸入output 輸出
encode 編碼decode 解碼
encrypt 加密decrypt 解密
compress 壓縮decompress 解壓縮
pack 打包unpack 解包
parse 解析emit 生成
connect 連接disconnect 斷開
send 發送receive 接收
download 下載upload 上傳
refresh 刷新synchronize 同步
update 更新revert 復原
lock 鎖定unlock 解鎖
check out 簽出check in 簽入
submit 提交commit 交付
push 推pull 拉
expand 展開collapse 折疊
begin 起始end 結束
start 開始finish 完成
enter 進入exit 退出
abort 放棄quit 離開
obsolete 廢棄depreciate 廢舊
collect 收集aggregate 聚集

五、Java變量名和常量名命名規范

5.1 變量命名

變量是指在程序運行中可以改變其值的量,包括成員變量和局部變量。變量名由多單詞組成時,第一個單詞的首字母小寫,其后單詞的首字母大寫,俗稱駱駝式命名法(也稱駝峰命名法),如 computedValues,index、變量命名時,盡量簡短且能清楚的表達變量的作用,命名體現具體的業務含義即可。

變量名不應以下劃線或美元符號開頭,盡管這在語法上是允許的。變量名應簡短且富于描述。變量名的選用應該易于記憶,即,能夠指出其用途。盡量避免單個字符的變量名,除非是一次性的臨時變量。pojo中的布爾變量,都不要加is(數據庫中的布爾字段全都要加 is_ 前綴)

5.2 常量命名

常量命名CONSTANT_CASE,一般采用全部大寫(作為方法參數時除外),單詞間用下劃線分割。

常量是在作用域內保持不變的值,一般使用final進行修飾。一般分為三種,全局常量(public static final修飾),類內常量(private static final 修飾)以及局部常量(方法內,或者參數中的常量),局部常量比較特殊,通常采用小駝峰命名即可。

常量一般都有自己的業務含義,不要害怕長度過長而進行省略或者縮寫。如,用戶消息緩存過期時間的表示,那種方式更佳清晰,交給你來評判。

5.3 通用命名規則

  • 盡量不要使用拼音;杜絕拼音和英文混用。對于一些通用的表示或者難以用英文描述的可以采用拼音,一旦采用拼音就堅決不能和英文混用。
    正例: BeiJing, HangZhou
    反例: validateCanShu
  • 命名過程中盡量不要出現特殊的字符,常量除外。
  • 盡量不要和jdk或者框架中已存在的類重名,也不能使用java中的關鍵字命名。
  • 妙用介詞,如for(可以用同音的4代替), to(可用同音的2代替), from, with,of等。
    如類名采用User4RedisDO,方法名getUserInfoFromRedis,convertJson2Map等。
  • 六、Java代碼注解

    6.1 注解的原則

    好的命名增加代碼閱讀性,代碼的命名往往有嚴格的限制。而注解不同,程序員往往可以自由發揮,單并不意味著可以為所欲為之胡作非為。優雅的注解通常要滿足三要素。

  • Nothing is strange
    沒有注解的代碼對于閱讀者非常不友好,哪怕代碼寫的在清除,閱讀者至少從心理上會有抵觸,更何況代碼中往往有許多復雜的邏輯,所以一定要寫注解,不僅要記錄代碼的邏輯,還有說清楚修改的邏輯。
  • Less is more
    從代碼維護角度來講,代碼中的注解一定是精華中的精華。合理清晰的命名能讓代碼易于理解,對于邏輯簡單且命名規范,能夠清楚表達代碼功能的代碼不需要注解。濫用注解會增加額外的負擔,更何況大部分都是廢話。
  • Advance with the time
    注解應該隨著代碼的變動而改變,注解表達的信息要與代碼中完全一致。通常情況下修改代碼后一定要修改注解。
  • // 根據id獲取信息【廢話注解】 getMessageById(id)

    6.2 注解格式

    注解大體上可以分為兩種,一種是javadoc注解,另一種是簡單注解。javadoc注解可以生成JavaAPI為外部用戶提供有效的支持javadoc注解通常在使用IDEA,或者Eclipse等開發工具時都可以自動生成,也支持自定義的注解模板,僅需要對對應的字段進行解釋。參與同一項目開發的同學,盡量設置成相同的注解模板。

    • 包注解

      包注解在工作中往往比較特殊,通過包注解可以快速知悉當前包下代碼是用來實現哪些功能,強烈建議工作中加上,尤其是對于一些比較復雜的包,包注解一般在包的根目錄下,名稱統一為package-info.java。

      /*** 落地也質量檢測* 1. 用來解決什么問題* 對廣告主投放的廣告落地頁進行性能檢測,模擬不同的系統,如Android,IOS等; 模擬不同的網絡:2G,3G,4G,wifi等** 2. 如何實現* 基于chrome瀏覽器,用chromedriver驅動瀏覽器,設置對應的網絡,OS參數,獲取到瀏覽器返回結果。** 注意: 網絡環境配置信息{@link cn.mycookies.landingpagecheck.meta.NetWorkSpeedEnum}目前使用是常規速度,可以根據實際情況進行調整* * @author 作者* @time 2019/12/7 20:3 下午*/ package cn.mycookies.landingpagecheck;
    • 類注接

      javadoc注解中,每個類都必須有注解

      /** * Copyright (C), 2019-2020, Jann balabala... * * 類的介紹:這是一個用來做什么事情的類,有哪些功能,用到的技術..... * * @author 類創建者姓名 保持對齊 * @date 創建日期 保持對齊 * @version 版本號 保持對齊 */
    • 屬性注解

      在每個屬性前面必須加上屬性注釋,通常有一下兩種形式,至于怎么選擇,你高興就好,不過一個項目中要保持統一。

      /** 提示信息 */ private String userName; /*** 密碼*/ private String password;
    • 方法注釋

      在每個方法前面必須加上方法注釋,對于方法中的每個參數,以及返回值都要有說明。

      /*** 方法的詳細說明,能干嘛,怎么實現的,注意事項...** @param xxx 參數1的使用說明, 能否為null* @return 返回結果的說明, 不同情況下會返回怎樣的結果* @throws 異常類型 注明從此類方法中拋出異常的說明*/
    • 構造方法注釋

      在每個構造方法前面必須加上注釋,注釋模板如下:

      /*** 構造方法的詳細說明** @param xxx 參數1的使用說明, 能否為null* @throws 異常類型 注明從此類方法中拋出異常的說明*/

    簡單注解往往是需要工程師自己定義,在使用注解時應該注意一下幾點:

  • 枚舉類的各個屬性值都要使用注解,枚舉可以理解為是常量,通常不會發生改變,通常會被在多個地方引用,對枚舉的修改和添加屬性通常會帶來很大的影響。
  • 保持排版整潔,不要使用行尾注釋;雙斜杠和星號之后要用1個空格分隔。
  • int id = 1;// 反例:不要使用行尾注釋 //反例:換行符與注釋之間沒有縮進 int age = 18; // 正例:姓名 String name; /*** 1. 多行注釋* * 2. 對于不同的邏輯說明,可以用空行分隔*/

    七、總結

    無論是命名和注解,他們的目的都是為了讓代碼和工程師進行對話,增強代碼的可讀性,可維護性。優秀的代碼往往能夠見名知意,注解往往是對命名的補充和完善。命名太南了!

    轉載自 :

    作者:浪人~
    鏈接:https://www.cnblogs.com/liqiangchn/p/12000361.html
    來源:博客園

    總結

    以上是生活随笔為你收集整理的【Java】命名规范的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。