hello大家好,我是小樓~
相信寫Java的同學應該都聽過阿里巴巴的《Java開發手冊》吧?我一開始寫Java時,也讀過這個手冊,里面有很多關于代碼格式,代碼規約的正例、反例,簡直就是居家旅行必備的手冊,
比如我印象中最深刻的是關于三目運算可能導致空指標的例子,我記得當時為了理解這個例子,還去查看了反編譯的class檔案:
【強制】三目運算子 condition ? 運算式 1:運算式 2 中,高度注意運算式 1 和 2 在型別對齊時,可能
拋出因自動拆箱導致的 NPE 例外, 說明:以下兩種場景會觸發型別對齊的拆箱操作:
1)運算式 1 或 運算式 2 的值只要有一個是原始型別,
2)運算式 1 或 運算式 2 的值的型別不一致,會強制拆箱升級成表示范圍更大的那個型別, 反例:Integer a = 1;
Integer b = 2;
Integer c = null;
Boolean flag = false;
// a*b的結果是int型別,那么c會強制拆箱成int型別,拋出NPE例外 Integer result = (flag ? a * b : c);
這本開發手冊不僅包含了代碼級的規約,甚至還包括了設計、工程結構、資料庫等等的規約,推薦每一位Java工程師都要通讀一遍,
這本手冊于2017年對外發布1.0.0版本,直到2019年版本名換成了五岳,從華山版到泰山版,再到嵩山,而今年發布了黃山版,估計是想著「五岳歸來不看山,黃山歸來不看岳」吧,
每次新版本發布,其實是比較關心新版本新增了啥,至于改動,一般不是實質性的變化基本也不用太過關心,但是吧,官方只給了一個粗略的改動日志:

這次的黃山版,新增了11條規約,具體是哪11條沒有說,我花了點時間,幫大家梳理并標注了下,

如果想要帶標注的《Java開發手冊-黃山版》,可以在公眾號回復關鍵字「資料」獲取,話不多說,下面列舉出黃山版新增的11條規約:
- 一、編程規約
- (二)常量定義
- 3.【強制】浮點數型別的數值后綴統一為大寫的 D 或 F,
- (十一)其他
- 6.【強制】列舉 enum(括號內)的屬性欄位必須是私有且不可變,
- 二、例外日志
- (二)例外處理
- 14.【推薦】為了保護用戶隱私,日志檔案中的用戶敏感資訊需要進行脫敏處理,
- 四、安全規約
- 9.【強制】對于檔案上傳功能,需要對于檔案大小、型別進行嚴格檢查和控制,
- 10.【強制】組態檔中的密碼需要加密,
- 五、資料庫
- (一) 建表規約
- 10.【強制】在資料庫中不能使用物理洗掉操作,要使用邏輯洗掉,
- 六、工程結構
- (二)二方庫依賴
- 6.【強制】二方庫定制包的命名方式,在規定的版本號之后加“-英文說明[序號]”,英文說明可以是部門簡稱、業務名稱,序號直接緊跟在英文說明之后,表示此定制包的順序號,
- (三)服務器
- 1.【強制】呼叫遠程操作必須有超時設定,
- 2.【推薦】客戶端設定遠程介面方法的具體超時時間(單位 ms),超時設定生效順序一般為:1)客戶端 Special Method;2)客戶端介面級別;3)服務端 Special Method;4)服務端介面級別,
- 7.【推薦】了解每個服務大致的平均耗時,可以通過獨立配置執行緒池,將較慢的服務與主執行緒池隔離開,免得不同服務的執行緒同歸于盡,
- 七、設計規約
- 7.【強制】系統設計時要準確識別出弱依賴,并針對性地設計降級和應急預案,保證核心系統正常可用,
其中「列舉 enum(括號內)的屬性欄位必須是私有且不可變」有點意思,初次讀到,不知是什么意思,于是我查到了如下的反例:
public enum SwitchStatus {
// 列舉的屬性欄位反例
DISABLED(0, "禁用"),
ENABLED(1, "啟用");
public int value;
private String description;
private SwitchStatus(int value, String description) {
this.value = https://www.cnblogs.com/zhuochongdashi/archive/2022/02/15/value;
this.description = description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
這里的value和description都可以被修改,如果被改了,后果不堪設想,雖然我沒想過列舉可以這么玩,但這確實是個風險點,有則加冕無則改之,
搜索關注微信公眾號"捉蟲大師",后端技術分享,架構設計、性能優化、原始碼閱讀、問題排查、踩坑實踐,公眾號對話框回復「資料」領取標注版《Java開發手冊-黃山版》
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/423916.html
標籤:其他
