Ecrire un DSL ? DSL Interne Outils Kotlin pour écrire un DSL Surcharge des opérateurs Type Alias Lambda en dehors des parenthèses Fonction d’extension Fonction Infix Lambda avec receiver Contrôler le scope avec DslMarker Exemple de DSL Demo/LiveCoding Conclusion PLAN 4
pratiques crafts Je m’intéresse au clean code, programmation fonctionnelle, … J’aime apprendre et partager mes connaissances Me contacter sur Linkedin/Twitter (@riadhmnasri) QUI SUIS-JE ? 5
Ce n’est pas un langage généraliste CSS, SQL, GRADLE, … Internal DSL: Il se base sur un langage hôte External DSL: Il a une syntaxe propre et il faut coder un ‘parser’ pour pouvoir l’utiliser C’EST QUOI UN DSL AU JUSTE ? 6
par la syntaxe permise par le language On se basera sur Kotlin comme langage hôte Kotlin offre les outils nécessaires pour pourvoir écrire son propre DSL DSL INTERNE 9
chercher à s’attacher au 1er receiver disponible, sinon elle va tenter de chercher dans le receiver suivant On peut limiter ceci, on ajoutant l’annotation @DslMarker afin de rétrécir le scope au receiver déclaré CONTRÔLER LE SCOPE AVEC @DSLMARKER 17
plus lisible (lecture plus intuitive, plus naturelle, …) Cacher/Supprimer le code inutile Faciliter l’échange entre différents interlocuteurs (Product Owner, Business Analyst, Développeur, …) CONCLUSION 21
Specific Language in Kotlin - Greg Milette https://www.jmix.io/cuba-blog/kotlin-dsl-from-theory-to-practice/ https://blog.developer.adobe.com/building-elegant-dsls-with-kotlin-707726c5ed21 REFERENCES 22