Kotlin'de paketler, importlar ve dosya seviyesindeki bildirimler, herhangi bir projede temel bir yapıyı oluşturur ve geliştiriciler sıklıkla isim alanlarının ve işlevlerin görünürlüğünün organizasyonu konusunda sorularla karşılaşır.
Meselenin tarihi: Kotlin, Java'nın geleneklerini sürdürerek paket sistemini destekler, ancak sınıf dışında işlevler ve özellikler oluşturulmasına olanak tanıyan dosya seviyesi bildirimler kavramını ekler, bu da kodun modülerliğini ve ifadeliliğini artırır.
Problem: İşlevlerin, özelliklerin ve sınıfların görünürlüğünü ve giriş noktasını en uygun şekilde nasıl düzenleyebiliriz, isim çatışmalarından, çift import tanımından ve proje parçaları arasında aşırı bağımlılıklardan kaçınarak?
Çözüm:
Kod örneği:
package utils import kotlin.math.* import model.User as UserModel fun sum(a: Int, b: Int) = a + b val PI2 = PI * 2
Anahtar özellikler:
Aynı isimde paketlere sahip farklı dosyalar, aynı isimde işlevler/özelliklerle bildirim içerebilir mi?
Evet, ancak farklı isimler veya importlar için alias kullanılmazsa, derleme sırasında isim çatışmasına yol açar. Dosya seviyesi bildirimler, package sınırları içinde çalışır.
Proje dizin yapısının, Java'daki gibi package ile örtüşmesi zorunlu mu?
Hayır, bu yalnızca kod organizasyonu ve bakım kolaylığı için önerilir, ancak derleyici yollar ve package arasında farklılık olmasına izin verir. Ancak, kodu taşırken veya araçlar aracılığıyla derleme yaparken loglama ve modülerlik ile ilgili zorluklar ortaya çıkabilir.
Bir .kt dosyasında birden fazla package tanımlamak mümkün mü?
Hayır, bir .kt dosyasında yalnızca bir package tanımlanabilir. Paketlerin karıştırılması derleme hatasına neden olur.
Farklı temalara ait tüm yardımcı işlevler tek bir paket olan utils içinde yer alır, Utility.kt dosyası çeşitli iş ve teknik yöntemleri içerir:
Artılar:
Eksiler:
Kurallara sıkı bir biçimde uyulur: Her paket alanı yansıtılır, dosya seviyesinde yalnızca bir sınıfa ait olmayan işlevler için kullanılır, alias, tekrarları ortadan kaldırmak için kullanılır, her dosya kendi temasına aittir:
Artılar:
Eksiler: