流畅的编程风格

在流畅的编程风格中,你可以从流畅的(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());
  }
}

我们的想法是始终返回一些对象以启用方法调用链的构建并使用反映自然说话的方法名称。这种流畅的风格使代码更具可读性。