列舉類的特殊使用規範
阿新 • • 發佈:2018-12-17
結合阿里巴巴java技術規範:
- 所有的列舉型別欄位必須要有註釋,說明每個資料項的用途。
- 二方庫裡可以定義列舉型別,引數可以使用列舉型別,但是介面返回值不允許使用枚 舉型別或者包含列舉型別的 POJO 物件。
- 列舉類名建議帶上 Enum 字尾,列舉成員名稱需要全大寫,單詞間用下劃線隔開。
- 列舉類與switch-case在外部搭配時要注意,當列舉類增加欄位時就帶來switch-case的更新問題,這種bug編譯期間無法得知,最好的辦法時把行為與列舉類繫結,或者把switch-case的邏輯統一寫在該列舉類的內部.
對第二個的理解:轉至知乎,作者:Brian 連結:https://www.zhihu.com/question/52760637/answer/350167318
列舉,就是把已知的全部羅列出來。作為二方/三方庫的提供者,我支援什麼,你們就是用什麼,這樣是安全的。庫版本升級後我支援了更多,你不知道情況下自然不會使用,反正我不支援的引數你不可能傳遞給我,所以作為輸入,列舉簡直就是安全保障。
但作為返回值,情況就反過來了。我先告訴你這些這些可以有,然後你規定這些這些可以有,除此之外都沒有。但是,是我說了算而不是你,所以你的規定狗屁不是。沒有仔細看手冊(假設有的話)的每一個字,鬼知道升級後的api會返回什麼,拋異常的可能性直趨百分百。