728x90
DSL
- Domain Specific Language의 약자로 특정 도메인에 국한해 사용하는 언어
- 코틀린을 통하여 DSL들을 접하는 경우가 많음
코틀린 DSL 예시
Gradle DSL
plugins {
'java-library'
}
dependencies{
api("junit:junit:4.12")
implementation("junit:junit:4.12")
testImplementation("junit:junit:4.12")
}
configurations{
implementation{
resolutionStrategy.failOnVersionConflict()
}
}
Test DSL
class MyTests: StringSpec({
"반환되는 길이는 String의 크기이어야 합니다." {
"test string".length shouldBe 5
}
"startsWith 함수는 prefix를 반환해야 합니다."{
"world" should startWith("wor")
}
})
- 특별한 도구가 필요 없고, 모든게 코틀린 문법으로 만들어진 DSL임
- 코틀린 DSL 타입은 안전하고 type-safe 컴파일 타임이나 IDE에서 여러가지 힌트를 얻을수 있으며 대부분의 경우 이미 누군가가 만들어둔 DSL이지만, 직접 만들수도 있음
코틀린 DSL 특징 및 요약
- DSL을 구현하면 사용법이 간단해지고, 코드 가독성이 올라감 하지만 내부적으로 어떠헥 동작하는지 파악하기는 어려움
- DSL은 복잡한 자료 구조, 계측적인 구조, 거대한 양의 데이터인 상황에서 적절하게 활용하는 것을 권장함
- 이미 만들어진 DSL이 다양하기 때문에, 적재적소에 활용하면 됨
'KOTLIN' 카테고리의 다른 글
[KOTLIN] SEALED CLASS (0) | 2022.07.27 |
---|---|
[KOTLIN] 멤버 확장 함수의 사용을 피하라 (이펙티브 코틀린) (0) | 2022.07.27 |
[KOTLIN] 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 (이펙티브 코틀린) (0) | 2022.07.13 |
[KOTLIN] 제네릭 타입과 VARIANCE 한정자를 활용하라 (이펙티브 코틀린) (0) | 2022.07.10 |
[KOTLIN] 타입 파라미터의 섀도잉을 피하라 (이펙티브 코틀린) (0) | 2022.07.10 |