- 備戰2022春招或暑期實習,祝大家每天進步億點點!Day8
- 本篇總結的是 《撰寫代碼最應該做好的事情》,后續會每日更新~
- 關于《Redis入門到精通》、《并發編程》等知識點可以參考我的往期博客:《Redis從入門到精通》系列 《并發編程》系列
- 相信自己,越活越堅強,活著就該逢山開路,遇水架橋!生活,你給我壓力,我還你奇跡!

1、簡介
著名的圖靈獎得主:尼古拉斯·沃斯,提出一個著名的等式:程式 = 演算法 +資料結構,因此我們程式員應該花精力做好學好演算法和資料結構,但是這并不是我們撰寫代碼時最應該做好的事情;因為在99.99%的場景下,不需要我們來設計演算法和實作資料結構(即便是一般的演算法工程師也是如此),
?
所以在實際開發中,我們撰寫代碼最應該做好的事情是什么呢?
小捌認為是良好的命名規范和詳細的代碼注釋,這兩個看似簡單的問題,但是想要做好真的太難太難了,以至于很多年老開發寫的代碼都會出現命名不規范,代碼注釋不全甚至沒有注釋的情況;因此這篇文章我們先來盤一盤Java程式員應該如何做好程式命名,
?
2、正文
2.1 目標
將Java程式的命名規范做好,需要達到的目標總結起來就只有四個字——望文生義,達到這個目標的命名能夠讓程式具有“自解釋”的功能,僅僅從名字上就能理解某個包、類、方法、變數的含義,這樣也可以縮減后續注釋的作業量,這樣的代碼傳閱給其他程式員時,也便于閱讀和維護,
?
2.2 包
關于包名的命名有兩個大致方向:
- 標準類別庫
- 用戶類別庫
標準類別庫
在Java體系中,標準類別庫的命名涉及到java、javax等命名,這些命名是由定規范的人定的,因此人家想怎么玩就怎么玩,在核心類別庫rt.jar包下可以查看,

用戶類別庫
用戶類別庫代碼建議使用公司的Internet域名開頭,頂級域名在前面,比如com.google、edu.xxx、org.xxx等等,這并不強制要求,但是如果你撰寫的代碼要在公司外部使用(比如開源),這是一個很好打廣告、展現公司的機會,

除了包的前綴之外的其余部分,需要滿足盡可能使用單個單詞,比如time、security、math;也可以使用縮寫,比如awt、io、sql,
?
不建議包名超過8個字母、不建議使用復數,
?
?
2.3 類
類由很多種,比如介面、抽象類、列舉類、普通類等等,這些類在命名上有相同點,也有不同點,
?
相同點:
- 類名統一使用駝峰命名法則(大駝峰),比如HttpClient、HttpResponse、HttpRequest
- 類名具有復數形式可以使用復數命名
- 禁止使用拼音,即便是國際通用的拼音命名,比如alibaba、youku也不建議出現在類名命名中
不同點:
- 介面命名一定要要言簡意賅,這樣的命名其實作類可以很好的包含介面的命名,比如Map、Set、List
- 列舉類必須使用Enum結尾
- 抽象類必須使用Abstract開頭,比如AbstractMap、AbstractSet;也可以使用Base,比如BaseCalendar、BaseRowSet,建議使用Abstract,
2.4 變數
變數的命名遵守小駝峰命名,在名稱中要體現具體的業務,描述變數的用途,千萬不要學原始碼搞那些單個字母的命名,比如這種:

此外要注意變數名盡量不要使用is開頭,比如isRemoved、isDeleted,因為這種命名往往在序列化場景中,被框架方向決議時錯誤的認為是removed和deleted,相信這種坑大家都踩過,最好的辦法就是完全不用,
?
2.5 常量
常量就是在作用域內保持不變的值,常量一般用final關鍵字修飾,常量有很多種分別是全域常量、包內常量、類內常量、區域常量等等,
?
全域常量:(包內常量、類內常量都一樣)
全域常量值得是訪問修飾符為public,通常用public static final修飾,這種常量威力巨大,任何地方都可以訪問,因此我們一定要把命名做好,
?
全域常量命名必須全部使用大寫字母,如果是多個單詞用下劃線隔開,拿Java的BigDecimal來舉例.
單個單詞的常量:
public static final BigDecimal ZERO = zeroThroughTen[0];
多個單詞的常量:
public final static int ROUND_HALF_UP = 4;
區域常量:
區域常量分為方法常量和引數常量,這兩種無需使用大寫字母,使用小寫即可,
?
引數常量:
public void hello(final String name) {
// 編譯錯誤
// name = "李子捌";
System.out.println(name);
}
方法常量:
public void hello() {
final String name = "李子捌";
// 編譯錯誤
// name = "Liziba";
System.out.println(name);
}
3、彩蛋
最后給大家推薦一個在線命名神器,大家快去試試吧,隨便輸入一個單詞,便會給你搜索很多由該單詞組成的詞,CODELF
CODELF

👇🏻 關注公眾號 獲取更多資料👇🏻
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/350913.html
標籤:java
上一篇:微信小程式后端Java介面開發
下一篇:【Java】內部類的定義
