84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
2017/1/8
可以说是「优雅地」处理, 总的来说要逻辑严谨, 即讲清楚 why
自己脑海有某些原则, 但是总不是不系统, 这令我不安.
Java 8
小伙看你根骨奇佳,潜力无限,来学PHP伐。
單說幾個用的比較多的或是比較官方的:
java8提供了optional類進行null pointer檢查,Guava提供了Preconditions.checkNotNull進行檢查,lombok提供NonNull註解
然而實際用起來,還是if(map!=null&&map.get("a")!=null)比較簡單,直觀,lombok用起來很優雅。 至於java8和guava的處理方式,就是見仁見智了。
optional的意義在於透過型別系統告訴你應該要進行null檢查,但不是optional的變數你就不需要要進行檢查了?不行,你還是要檢查。所以optional的使用很尷尬,除非是新的程式碼,不然很難一致處理。
optional參考自函數式語言裡的option/maybe,但是在函數式語言裡通常是沒有null的,看到option就檢測,沒有就不用檢查,處理是一致的。
最近的TypeScript支援strictNullCheck和union type。 null單獨成一個類型,結合union type,就可以在類型層面表示可null的類型(例如string | null),strictNullCheck要求所以可null的變數都要先檢查再使用。
string | null
Java裡可以註解標記NonNull,然後用工具偵測,效果是差不多的。
單說幾個用的比較多的或是比較官方的:
java8提供了optional類進行null pointer檢查,
Guava提供了Preconditions.checkNotNull進行檢查,
lombok提供NonNull註解
然而實際用起來,還是if(map!=null&&map.get("a")!=null)比較簡單,直觀,lombok用起來很優雅。
至於java8和guava的處理方式,就是見仁見智了。
optional的意義在於透過型別系統告訴你應該要進行null檢查,但不是optional的變數你就不需要要進行檢查了?不行,你還是要檢查。所以optional的使用很尷尬,除非是新的程式碼,不然很難一致處理。
optional參考自函數式語言裡的option/maybe,但是在函數式語言裡通常是沒有null的,看到option就檢測,沒有就不用檢查,處理是一致的。
最近的TypeScript支援strictNullCheck和union type。 null單獨成一個類型,結合union type,就可以在類型層面表示可null的類型(例如
string | null
),strictNullCheck要求所以可null的變數都要先檢查再使用。Java裡可以註解標記NonNull,然後用工具偵測,效果是差不多的。