
1. Lambda運算式的單元測驗
1.1. 單元測驗是測驗一段代碼的行為是否符合預期的方式
1.2. Lambda運算式沒有名字,無法直接在測驗代碼中呼叫
1.2.1. 將Lambda運算式放入一個方法測驗,這種方式要測那個方法,而不是Lambda運算式本身
1.2.2. 請用方法參考,任何Lambda運算式都能被改寫為普通方法,然后使用方法參考直接參考
1.2.2.1. 想要對復雜一點的Lambda運算式撰寫單元測驗,將其抽取成一個常規的方法
2. 在測驗替身時使用Lambda運算式
2.1. 使用測驗替身描述系統中其他模塊的期望行為
2.1.1. 測驗替身也常被稱為模擬
2.1.2. 測驗存根和模擬都屬于測驗替身
2.1.2.1. 區別是模擬可以驗證代碼的行為
2.2. 使用Lambda運算式的最簡單方式是實作輕量級的測驗存根
2.3. Mockito框架有助于更容易地產生測驗替身
2.3.1. Mockito使用Answer介面允許用戶提供其他行為
2.3.2. Answer本身就是一個函式介面
2.3.2.1. 代碼即資料
3. 惰性求值和除錯
3.1. 因為迭代已交由類別庫控制,而且很多流操作是惰性求值的,所以使用流時,除錯可能會變得更加復雜
4. 日志和列印訊息
4.1. peek方法
4.1.1. 讓你能查看每個值,同時能繼續操作流
4.1.1.1. 能記錄中間值,在除錯時非常有用
4.1.2. 包含一個空的方法體,只要能設定斷點就行
4.1.2.1. 將值簡單地映射為其本身,就有地方設定斷點了
5. 重構候選項
5.1. 使用流操作替代for回圈
5.2. 封裝區域狀態
5.2.1. 比如日志的級別,isDebugEnabled方法暴露了內部狀態
5.2.2. 使用Lambda運算式,外面的代碼根本不需要檢查日志級別
5.3. 使用繼承只是為了覆寫一個方法
5.3.1. 鼓勵重用和組合
5.3.2. 代碼短小精悍就是個優勢
5.3.3. 在Java 8以前,這并不是一個反模式,而是慣用的代碼撰寫方式
5.3.3.1. 就像使用匿名內部類傳遞行為一樣,都不是反模式,而是在Java中表達你所想的唯一方式
5.4. 不要重復你勞動(Don't Repeat Yourself, DRY)
5.4.1. 有時,重復是唯一可以避免系統過緊耦合的方式
5.4.1.1. 同樣的東西寫兩遍(Write Everything Twice, WET)
5.4.2. 如果有一個整體上大概相似的模式,只是行為上有所不同,就可以試著加入一個Lambda運算式
5.5. 隨著語言的演進,編程習慣也要與時俱進
6. 使用Lambda運算式的方式
6.1. 更好的集合類代碼
6.1.1. 使用新的Stream和Collector
6.2. 資料并行處理
6.3. 更簡潔干凈的代碼
6.4. 并發
6.4.1. 使用RxJava中新的并發特性
6.4.2. 使用CompletableFuture類
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542836.html
標籤:Java
