✨ الگوی Builder با «Kotlin DSL» رو قورت بده! 🚀
الگوی Builder یکی از پرکاربردترین الگوهای طراحی واسه ساختن آبجکتهای پیچیده ست. توی جاوا کلی boilerplate داشت، ولی توی «Kotlin» با «DSL» میتونیم خیلی تمیزتر و خواناتر پیادهاش کنیم. 🎯
مثلاً فرض کن یه کلاس «Config» داری با کلی پارامتر optional. بدون «Builder» مجبوری overload یا constructor با arguments زیاد بنویسی. با «DSL» میتونی مثل یه زبان اختصاصی براش کد بزنی.
حالا بیا یه مثال ببینیم:
این کد بهت اجازه میده با یه «DSL block» تنظیمات رو بنویسی:
خودت ببین چقدر خواناتر شد! دیگه نیازی به زنجیرهای از متدهای set نیست. «Kotlin DSL» قدرت kotlin رو توی type-safe builderها نشون میده. 💪
نتیجه: هر جا که تعداد پارامترها زیاده، از «DSL builder» استفاده کن تا کدت هم مختصر بمونه هم readable. حرفهایها اینطوری کد میزنن. 😎
#Codeit #Android #Kotlin #Jetpack #DesignPatterns #DSL #CleanCode #KotlinTips
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
الگوی Builder یکی از پرکاربردترین الگوهای طراحی واسه ساختن آبجکتهای پیچیده ست. توی جاوا کلی boilerplate داشت، ولی توی «Kotlin» با «DSL» میتونیم خیلی تمیزتر و خواناتر پیادهاش کنیم. 🎯
مثلاً فرض کن یه کلاس «Config» داری با کلی پارامتر optional. بدون «Builder» مجبوری overload یا constructor با arguments زیاد بنویسی. با «DSL» میتونی مثل یه زبان اختصاصی براش کد بزنی.
حالا بیا یه مثال ببینیم:
class Config private constructor(
val host: String,
val port: Int,
val debug: Boolean
) {
class Builder {
var host: String = "localhost"
var port: Int = 8080
var debug: Boolean = false
fun build(): Config = Config(host, port, debug)
}
companion object {
fun build(block: Builder.() -> Unit): Config =
Builder().apply(block).build()
}
}
این کد بهت اجازه میده با یه «DSL block» تنظیمات رو بنویسی:
val config = Config.build {
host = "api.example.com"
port = 443
debug = true
}
خودت ببین چقدر خواناتر شد! دیگه نیازی به زنجیرهای از متدهای set نیست. «Kotlin DSL» قدرت kotlin رو توی type-safe builderها نشون میده. 💪
نتیجه: هر جا که تعداد پارامترها زیاده، از «DSL builder» استفاده کن تا کدت هم مختصر بمونه هم readable. حرفهایها اینطوری کد میزنن. 😎
#Codeit #Android #Kotlin #Jetpack #DesignPatterns #DSL #CleanCode #KotlinTips
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🔥1