Java Language
유창한 인터페이스
수색…
비고
목표
유창한 인터페이스의 기본 목표는 가독성 향상입니다.
객체를 생성 할 때 호출자가 사용할 수있는 선택 사항을 명확하게 작성하고 컴파일 타임 검사를 통해 적용 할 수 있습니다. 예를 들어 경로를 따라 단계를 나타내는 다음과 같은 트리 옵션을 고려하여 복잡한 객체를 구성 할 수 있습니다.
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