🧼 طراحی API تمیز در «Kotlin» یعنی کدی که خوانا، پیشبینیپذیر و مقاوم در برابر خطاهای ناخواسته باشه.
📦 فرض کنید یک تابع عملیات شبکه انجام میده و ممکنه موفق باشه یا با خطا مواجه بشه.
🔧 استفاده از «sealed class» به جای «nullable» یا «Exception» خروجی رو شفاف و اجباری برای هندل کردن همه حالتها میکنه.
مثال ساده از یک «API» تمیز برای دریافت کاربر:
✅ این طراحی باعث میشه مصرفکننده (مثلاً «ViewModel») مجبور بشه همه شاخههای «Success» و «Error» رو پوشش بده و دیگه خبری از «null»های غیرمنتظره یا خطاهای پنهان نیست.
🚀 نکته عملی: همیشه برای توابعی که میتونند شکست بخورند، از «sealed class» یا «Result» استاندارد «Kotlin» استفاده کنید تا کدتون هم تمیز بمونه هم دیباگ کردنش راحتتر بشه.
#Codeit #Android #Kotlin #Jetpack #CleanArchitecture #API #SealedClass #KotlinTips
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
📦 فرض کنید یک تابع عملیات شبکه انجام میده و ممکنه موفق باشه یا با خطا مواجه بشه.
🔧 استفاده از «sealed class» به جای «nullable» یا «Exception» خروجی رو شفاف و اجباری برای هندل کردن همه حالتها میکنه.
مثال ساده از یک «API» تمیز برای دریافت کاربر:
sealed class NetworkResult<out T> {
data class Success<T>(val data: T) : NetworkResult<T>()
data class Error(val message: String, val code: Int? = null) : NetworkResult<Nothing>()
}
fun fetchUser(id: String): NetworkResult<User> {
return try {
val user = apiService.getUser(id)
NetworkResult.Success(user)
} catch (e: Exception) {
NetworkResult.Error("Failed to fetch user", code = 404)
}
}
✅ این طراحی باعث میشه مصرفکننده (مثلاً «ViewModel») مجبور بشه همه شاخههای «Success» و «Error» رو پوشش بده و دیگه خبری از «null»های غیرمنتظره یا خطاهای پنهان نیست.
🚀 نکته عملی: همیشه برای توابعی که میتونند شکست بخورند، از «sealed class» یا «Result» استاندارد «Kotlin» استفاده کنید تا کدتون هم تمیز بمونه هم دیباگ کردنش راحتتر بشه.
#Codeit #Android #Kotlin #Jetpack #CleanArchitecture #API #SealedClass #KotlinTips
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🔥2❤1