流暢的程式設計風格

在流暢的程式設計風格中,你可以從流暢的(setter)方法返回 this,這些方法不會以非流暢的程式設計風格返回任何內容。

這允許你連結不同的方法呼叫,這使得程式碼更短,更容易為開發人員處理。

考慮這個不流利的程式碼:

public class Person {
  private  String firstName;
  private String lastName;

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  public String whoAreYou() {
    return "I am " + firstName + " " + lastName;
  }

  public static void main(String[] args) {
    Person person = new Person();
    person.setFirstName("John");
    person.setLastName("Doe");
    System.out.println(person.whoAreYou());
  }
}

由於 setter 方法不返回任何內容,我們需要在 main 方法中使用 4 條指令來例項化帶有一些資料的 Person 並列印它。使用流暢的樣式,此程式碼可以更改為:

public class Person {
  private  String firstName;
  private String lastName;

  public String getFirstName() {
    return firstName;
  }

  public Person withFirstName(String firstName) {
    this.firstName = firstName;
    return this;
  }

  public String getLastName() {
    return lastName;
  }

  public Person withLastName(String lastName) {
    this.lastName = lastName;
    return this;
  }

  public String whoAreYou() {
    return "I am " + firstName + " " + lastName;
  }

  public static void main(String[] args) {
    System.out.println(new Person().withFirstName("John")
      .withLastName("Doe").whoAreYou());
  }
}

我們的想法是始終返回一些物件以啟用方法呼叫鏈的構建並使用反映自然說話的方法名稱。這種流暢的風格使程式碼更具可讀性。