수색…


비고

목표

유창한 인터페이스의 기본 목표는 가독성 향상입니다.

객체를 생성 할 때 호출자가 사용할 수있는 선택 사항을 명확하게 작성하고 컴파일 타임 검사를 통해 적용 할 수 있습니다. 예를 들어 경로를 따라 단계를 나타내는 다음과 같은 트리 옵션을 고려하여 복잡한 객체를 구성 할 수 있습니다.

A -> B 
  -> C -> D -> Done
       -> E -> Done
       -> F -> Done.
       -> G -> H -> I -> Done.

유창한 인터페이스를 사용하는 빌더는 호출자가 각 단계에서 사용할 수있는 옵션을 쉽게 볼 수 있습니다. 예를 들어, A -> B 는 가능하지만 A -> C 가 아니므로 컴파일 타임 오류가 발생합니다.

진실 - 유창한 테스트 프레임 워크

"진실을 사용하는 방법"에서 http://google.github.io/truth/

String string = "awesome";
assertThat(string).startsWith("awe");
assertWithMessage("Without me, it's just aweso").that(string).contains("me");

Iterable<Color> googleColors = googleLogo.getColors();
assertThat(googleColors)
    .containsExactly(BLUE, RED, YELLOW, BLUE, GREEN, RED)
    .inOrder();

유창한 프로그래밍 스타일

유창 프로그래밍 스타일에서 당신은 반환 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());
  }
}

세터 방법이 아무것도 반환하지 않기 때문에, 우리는 4 개 지시해야 할 main 인스턴스화하는 방법을 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());
  }
}

아이디어는 항상 메서드 호출 체인을 구축하고 자연스러운 말을 반영하는 메서드 이름을 사용하기 위해 개체를 반환하는 것입니다. 이 유창한 스타일 덕분에 코드를 더 쉽게 읽을 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow