Middle+
Ar naudojote inline klases savo kūrimo patirtyje?
sobes.tech AI
Atsakymas iš AI
Taip, naudoju. Inline klasės (arba value klasės Kotlin 1.5+ versijoje) naudojamos:
- Tipų saugumo didinimui be papildomų išlaidų: leidžia kurti "apvalkale" primityviems tipams ar kitoms klasėms, suteikiant jiems specifinę reikšmę, pavyzdžiui, matavimo vienetus, naudotojo ID ir kt. Kotlin kompiliatorius pakeičia inline klasės pavyzdį jos baziniu tipu, išvengiant nereikalingų objektų kūrimo.
pavyzdys:
// Inline klasės apibrėžimas
@JvmInline
value class UserId(val id: String)
fun findUser(id: UserId) {
// Vartotojo paieškos logika
}
fun main() {
val userId = UserId("12345")
findUser(userId) // Saugu, tikimasi UserId
// findUser("12345") // Kompiliatoriaus klaida, tikimasi UserId, gaunama String
}
-
Tikslesnių ketinimų kodavimas: aiškiai nurodo, kokio tipo duomenys tikimasi ar grąžinami, didina kodo skaitomumą ir palaikymą.
-
Papildomų objektų kūrimo minimizavimas dirbant su primityviaisiais tipais: leidžia naudoti inline klasėje apibrėžtas metodus ir savybes be objekto kūrimo.
@JvmInline
value class Password(private val s: String) {
val length: Int
get() = s.length
fun isValid(): Boolean = s.length >= 8
}
fun processPassword(password: Password) {
if (password.isValid()) {
// Galiojantis slaptažodis
}
}
fun main() {
val userPassword = Password("SecurePassword")
processPassword(userPassword)
println(userPassword.length) // Be objekto kūrimo
}
Inline klasės padeda pagerinti tipų saugumą ir našumą, ypač dirbant su pasikartojančiais duomenų tipais, turinčiais skirtingą semantinę reikšmę.