stream and lambda(5) - lambda 表示式最佳實踐
lambda 表示式和函式式介面給我們的編碼在一定程度上提供了便利,但我們在使用的時候也要儘量優雅的使用,達到最佳實踐。
lambda 表示式結構
在第一章節,我們有提到,lambda 表示式的結構大致為:(型別)(引數1, 引數2, …) -> {方法實現}。
- lambda 表示式返回型別能不寫則不寫
- 引數型別儘可能不寫
- 單引數時,不寫小括號
-
單行表示式體,不寫大括號和
return
關鍵字 - 能直接使用方法引用時,直接使用方法引用
自定義函式式介面
@functionalinterface default
使用函式式介面
- 當函式式介面當引數時,應避免介面過載,不然會導致 lambda 表示式的返回型別無法自動推導
- lambda 表示式體應儘量簡潔
不使用 lambda 的情況
- lambda 表示式體邏輯太多
- 有大量相同的lambda 表示式體在專案中出現,可以考慮定義介面並實現
- 有多層巢狀 lambda,程式碼難以閱讀
總結
好的程式碼,不好的程式碼,最終都是由人來維護,所以程式碼的可讀性很重要。保持良好的編碼習慣,遵循良好的程式碼實踐,不單單是對其他閱讀程式碼的人友好,對自己更好。畢竟自己寫的程式碼,相關功能的開發及維護最終還會落到自己頭上。
「其他文章」
- stream and lambda(18) - 終止操作之 stream 收集器 collectors
- stream and lambda(15) - 終止操作之 stream 陣列操作 toArray
- stream and lambda(13) - 終止操作之計數 count 與比較 min、max
- stream and lambda(12) - 終止操作之查詢與匹配(findAny、findFirst、allMatch、anyMatch、noneMatch)
- stream and lambda(11) - Optional 簡介
- stream and lambda(10) - 中間操作之排序sorted與除錯peek
- stream and lambda(9) - 中間操作之map操作(map、flatmap)
- stream and lambda(8) - 中間操作之篩選操作(filter、distinct、limit、skip)
- stream and lambda(7) - stream 的建立
- stream and lambda(6) - stream 簡介
- stream and lambda(5) - lambda 表示式最佳實踐
- stream and lambda(3) - jdk 提供的函式式介面
- stream and lambda(2) - 函式式介面簡介
- stream and lambda(1) - lambda 簡介