Mobil Dünyada Extension

Muhammet ÖMER
HardwareAndro
Published in
5 min readJul 12, 2020
Photo by Lin Mei on Unsplash

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.

extensions on dart language

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.

extension on dart language

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.

metric conversions extension on dart language

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.

main.dart

Herhangi bir yere extension ismini yazarak kolay bir şekilde import edebilirsiniz.

import extension

Import ettikten sonra örnek olarak birkaç deneme yapalım.

main.dart

Kodu build ettikten sonra istediğimiz çıktıyı elde ediyoruz.

terminal output

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ı.

extension on kotlin language

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.

metric conversions extension on kotlin language

Ardından aynı örneğimizi burada gerçekleştiriyoruz.

main.kt

Kodu build ettikten sonra istediğimiz çıktıyı elde ediyoruz.

build on Try Kotlin

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.

extension on swift language

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ı.

metric conversions extension on swift language
main.swift

Kodu build ettikten sonra istediğimiz çıktıyı elde ediyoruz.

build on Online Swift Playground

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 :

--

--

Muhammet ÖMER
HardwareAndro

Computer Engineer | Mobile Application Developer | Traveler