Sobes.tech
Middle+

Geliştirme deneyiminizde inline sınıflar kullandınız mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, kullandım. Inline sınıflar (veya Kotlin 1.5+ sürümünde değer sınıfları) şu amaçlar için kullanılır:

  1. Yükleme maliyeti olmadan tip güvenliğini artırmak: Primitif türler veya diğer sınıflar için "kapsüller" oluşturmaya izin verirler, onlara belirli bir anlam kazandırırlar, örneğin ölçü birimleri, kullanıcı kimlikleri vb. Derleme sırasında Kotlin derleyicisi, inline sınıf örneğini temel türüyle değiştirir ve gereksiz nesne oluşturmayı önler.

Örnek:

// Inline sınıf tanımı
@JvmInline
value class UserId(val id: String)

fun findUser(id: UserId) {
    // Kullanıcıyı ID'sine göre bulma mantığı
}

fun main() {
    val userId = UserId("12345")
    findUser(userId) // Güvenli, UserId bekleniyor
    // findUser("12345") // Derleme hatası, UserId bekleniyor, String alınıyor
}
  1. Niyetlerin daha net kodlanması: Hangi veri tipinin beklendiğini veya döndürüldüğünü açıkça gösterir, böylece kod okunabilirliği ve sürdürülebilirliği artar.

  2. Primitiflerle çalışırken gereksiz nesne oluşturmayı azaltmak: Inline sınıfta tanımlı metodlar ve özellikler kullanılabilir, bu sayede çalışma zamanında nesne oluşturmadan kullanılabilir.

@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()) {
        // Geçerli şifre işlemleri
    }
}

fun main() {
    val userPassword = Password("SecurePassword")
    processPassword(userPassword)
    println(userPassword.length) // Password nesnesi oluşturmadan çalışır
}

Inline sınıfların kullanımı, özellikle farklı semantik anlamlara sahip tekrar eden veri tipleriyle çalışırken, tip güvenliğini ve performansı artırmaya yardımcı olur.