Mobil Dünyada Extension
Herkese merhaba 👋 Bu yazımda sizlere extension’ların ne olduğundan, mobil dünyada nasıl kullanıldığından bahsedeceğim. Bu konuyu Dart, Kotlin ve Swift üzerinde göstererek anlatacağım. Böylelikle cross platform ve native platform kullanımlarında fark olup olmadığını görmüş olacağız.
Extension Nedir ?
Extension’lar, varolan veya sizin oluşturduğunuz bir sınıfa, structure’a ve enumeration’a yeni özellikler eklemenize yaramaktadır. Anlamanızı kolaylaştırmak için bir örnek vermek gerekirse; misal String
sınıfından bir değişken oluşturduğumuzda ve bu değişkenin hemen yanına “nokta” eklediğimizde, dillerin bize sağladığı bazı özelliklere hızlıca erişmemize yaramaktadır. Bu örneği bir görsel ile güçlendirelim.
Yukarıdaki örnekte görüldüğü gibi farkında olmadan bile extension’ları kullanıyoruz.
Custom Extension Yazabilir Miyim? Faydası Ne Olacak?
Evet kendinize ait bir extension yazabilirsiniz. Yüksek seviyeli programlama diller, makineden ziyade geliştirici dostudur. Bu nedenle, bu türdeki çoğu diller extension’ları desteklemektedir.
Kendimize ait bir extension yazarak, projemizdeki geliştirme hızını, gözle görülebilir derecede hızlandırabiliriz. Tabii bu, projeden projeye değişkenlik göstermektedir.
Projelerinizde extension kullanmanız clean code prensiplerinde bulunan kod okunurluğu açısından önemli bir yere sahiptir. Sizinle birlikte projede çalışan diğer mühendislerin yazdığınız kodu anlaması, size olan sevgilerini ve saygılarını artıracaktır.
Ek olarak projenize bir feature eklediğinizde veya projenize bakım yaptığınızda size hız kazandıracaktır. Çünkü “koda bakım yapılmak istendiğinde, zaman maliyeti çok önemlidir.”
Dart Dilinde Extension Metodlar
Extension özelliği Dart programlama diline 2.7 sürümü ile birlikte geldi. Bu özellikle birlikte geliştiriciler biraz daha rahatlığa kavuştu. Nasıl kullanıldığına hep birlikte bakalım.
Projemizde yeni bir Dart dosyası oluşturduktan sonra aşağıdaki kodları ekleyelim. ExtensionName
yerine istediğiniz ismi verebilirsiniz. Type
yerine ise hangi sınıf kullanımında olmasını istiyorsak onu ekliyoruz.
Alıştırma olarak sayılara belirttiğimiz uzunluk birimlerini metreye dönüşmelerini sağlayan bir örnek yapalım. Yani 2.km
yazdığımız zaman bizim için 2000 metre
olarak dönüşüm yapacaktır.
Yukarıda yazdığımız kodu özetlemek istersek kullanılan int
sınıfına ek özellikler getiriyor. Kod içerisinde bulunan this
ise metoda gönderdiğimiz değişkendir. Yani 2.km
yazdığımız zaman return = 2 * 1000
yapmaktadır.
Extension yazdıktan sonra kullanılmaya çalışıldığında hata verecektir. Extension’ı import ederek kullanmamız gerekmektedir.
Herhangi bir yere extension ismini yazarak kolay bir şekilde import edebilirsiniz.
Import ettikten sonra örnek olarak birkaç deneme yapalım.
Kodu build ettikten sonra istediğimiz çıktıyı elde ediyoruz.
Böylelikle dart programlama dilinde extension kullanımı görmüş ve öğrenmiş olduk. Bu örnek projenin GitHub reposuna buraya tıklayarak ulaşabilirsiniz. Sizde denemek isterseniz sıvı ölçü birimleri ile örnek yapabilirsiniz.
Kotlin Dilinde Extension Metodlar
Buraya kadar extension’ların ne olduğunu, nerelerde kullandığımızı az çok anlaşıldığını düşünüyorum. Peki Kotlin dilinde nasıl kullanılıyor? Aynı örnek üzerinde görelim.
Kod Kotlin’in online editörü ile derlenmiştir.
Dart dilinde gördüğümüz extension biraz daha class mantığıyla çalıştığını görmüştük. extension ExtensionName on Type{}
extension’a özel bir isim tanımlayıp hangi sınıf türünde çalışacağını belirtmiştik. Kotlin’de durum biraz farklı.
FunctionName
yerine istediğiniz ismi verebilirsiniz. Type
yerine ise hangi sınıf kullanımında olmasını istiyorsak onu ekliyoruz. Ardından süslü parantez
içerisinde yapmasını istediğimiz işlemleri belirtiyoruz.
Örneğimizdeki özellikleri Kotlin’de tanımladığımızda bu şekilde bir sonuç çıkacaktır.
Ardından aynı örneğimizi burada gerçekleştiriyoruz.
Kodu build ettikten sonra istediğimiz çıktıyı elde ediyoruz.
Kotlin programlama dilinde extension kullanımının Dart diline göre biraz farklı olduğunu görmüş olduk. Yaptığımız örneğin kodlarına buraya tıklayarak ulaşabilirsiniz.
Swift Dilinde Extension Metodlar
Swift. Swift. Swift! Mac cihazım olmadığı için uzun zamandır yazmak isteyip bir türlü fırsat bulamadığım dili, ilk kez burada sizinle birlikte yazacağım.
Extension hakkında artık kafamızda soru işareti kalmadığını düşünüyorum. Eğer anlamadığınız veya sormak istediğiniz bir şey olursa yorum olarak belirtebilir, bana ulaşabilirsiniz.
Kod Swift’in online editörü olan Online Swift Playground ile derlenmiştir.
Hadi örneğe geçelim.
Dart diline benzerliği ile üstteki yapıyı oluşturarak extension oluşturabilirsiniz. Type
yerine ise diğer dillerdeki gibi kullanılmasını istediğimiz sınıfı ekliyoruz. Ardından diğer dillerdeki gibi fonksiyonlarımızı ekliyoruz. Swift’te farklı olan this
yerine self
yazıyor olmamız. Onun dışında görüldüğü üzere diğer her şey aynı.
Kodu build ettikten sonra istediğimiz çıktıyı elde ediyoruz.
Swift programlama dilinde extension kullanımının diğer dillere göre daha basit olduğunu gördük. Yaptığımız örneğin kodlarına buraya tıklayarak ulaşabilirsiniz.
Yazıyı okuyarak zaman ayırdığınız için teşekkür ederim, faydalı olması dileğiyle.
Bana bu adreslerden ulaşabilirsiniz:
Proje kodlarının GitHub reposu :