空指針帶來的日常不可避免的一些問題
1.寫太多的if-else在程序提交給sona代碼質量檢測工具的時候,會遇到分析問題,提示方法的複雜度過高
for循環和if-else以及三目運算符都會增加方法的複雜度,複雜度越高,可讀性越低
2.隨着項目的迭代,項目的方法變得複雜不易讀,過多的if-else嵌套非常影響編碼格式帶來的閱讀問題,也會加大重構的難度
規避策略
1.前端傳入後臺參數時,利用@Valid或者@Validate做參數校驗控制
2.方法在使用到不應爲null的參數時,先校驗或者斷言
// 1.利用assert
ssert param != null;
// 2.利用Objects的靜態方法
Objects.nonNull(param, "xxx不能爲空")
// 3.guava包的靜態方法
Preconditions.checkNotNull等
3.提供公共的避免null取值的方法,最好是寫在工具類中
適用於系統特定的一些爲null的取值默認策略
4.使用lambda的Option靜態方法來替代三目運算符
5.拆解方法體,分散在各個方法中,增強可讀性,保留方法的主體處理流程即可
上層思想
1.設計之初,設置好每一個從數據庫中的默認值,哪些是必須有的值,少用if-else來判斷
2.不建議在實體類的get/set方法來處理null,會影響數據的初始狀態,容易產生不可預知的問題