1. 程式人生 > >《Java 8 in Action》Chapter 8:重構、測試和除錯

《Java 8 in Action》Chapter 8:重構、測試和除錯

我們會介紹幾種方法,幫助你重構程式碼,以適配使用Lambda表示式,讓你的程式碼具備更好的可讀性和靈活性。除此之外,我們還會討論目前比較流行的幾種面向物件的設計模式,
包括策略模式、模板方法模式、觀察者模式、責任鏈模式,以及工廠模式,在結合Lambda表示式之後變得更簡潔的情況。最後,我們會介紹如何測試和除錯使用Lambda表示式和Stream API的程式碼。

1. 為改善可讀性和靈活性重構程式碼

1.1 改善程式碼的可讀性

Java 8的新特性也可以幫助提升程式碼的可讀性:

  • 使用Java 8,你可以減少冗長的程式碼,讓程式碼更易於理解
  • 通過方法引用和Stream API,你的程式碼會變得更直觀

利用Lambda表示式、方法引用以及Stream改善程式程式碼的可讀性:

  • 重構程式碼,用Lambda表示式取代匿名類
  • 用方法引用重構Lambda表示式
  • 用Stream API重構命令式的資料處理

1.2 從匿名內部類到Lambda表示式的轉換

將實現單一抽象方法的匿名類轉換為Lambda表示式

// 傳統的方式,使用匿名類
Runnable r1 = new Runnable(){
    public void run(){
        System.out.println("Hello");
    }
}
// 新的方式,使用Lambda表示式
Runnable r2 = () -> System.out.println("Hello");

匿名 類和Lambda表示式中的this和super的含義是不同的。在匿名類中,this代表的是類自身,但是在Lambda中,它代表的是包含類。其次,匿名類可以遮蔽包含類的變數,而Lambda表示式不能(它們會導致編譯錯誤),如下面這段程式碼:

int a = 10;
Runnable r1 = () -> {
    int a = 2;                    // 編譯錯誤
    System.out.println(a);
};
Runnable r2 = new Runnable() {
    public void run() {
        int a = 2;                // 正常
        System.out.println(a);
    }
}

在涉及重