API 에서 DSL로
DSL?
- 특정 도메인(분야, 해결하려는 문제)을 적용하는데 특화된 언어를 의미
- 명확하고 간결한 코드의 API를 작성 가능
구조화된 API 구축
- 수신 객체 지정 람다
- 람다 본문 안에서 메서드를 결정하는 방식을 재정의함으로써 여러 요소를 중첩시킬 수 있는 구조를 만들 수 있다.
- 수신 객체 지정 람다가 이름 결정 규칙을 바꾼다.
- 중위 호출 인자로 특별히 이름을 붙인 객체를 사용하면 특수 기호를 사용하지 않는 실제 영어처럼 보이는 DSL 생성 가능
- 원시 타입에 대한 확장을 정의하면 날짜 등의 여러 종류의 상수 가독성을 높일 수 있다.
invoke 관례를 사용한 더 유연한 블록 중첩
- 객체를 함수처럼 다룰 수 있다.
- DSL를 다양한 방법으로 사용할 수 있다. invoke 관례의 파라미터로 수신 객체 지정 람다를 받는 패턴을 활용할 수 있다.
- 오버라이드 가능!