Kotlin’de Kullanmamız Gereken Özellikler ve En Çok Yapılan Hatalar — Part 2

Merve Tafralı
3 min readMay 18, 2023

--

Merhabalar! Bu yazımız da Kotlin dilinde en çok yaptığımız hatalardan ve çözümlerinden bahsedeceğim.

1. Nullability Issues

Kotlin’de ki en büyük avantajlardan biri null hatalarını engelleyebiliyor olmamızdır. Buna rağmen bir çoğumuz bu hataları almaya devam ediyor. Peki bu avantajı nasıl kullanmalıyız?

  1. Nullable ve non-nullable tipleri doğru kullanmak: Kotlin’de, bir değişkenin null değer alabilmesi için “?” işaretini kullanarak nullable hale getirebiliriz. Bu, nullability hatalarını önlemek için önemlidir, çünkü bir değişkenin null olup olmadığını kontrol etmeden önce null değer alabilmesi gerektiğini belirtmiş oluruz. Non-nullable tipler, “?” işareti kullanılmadan tanımlanır ve asla null değer alamazlar. Bu sayede, nullability hatalarını engelleriz.
  2. Null kontrol işlemleri yapmak: Nullable değişkenleri kullanırken, null değer alabileceğini kabul ederiz ve bu nedenle null kontrol işlemlerini yapmak önemlidir. Bunun için, “if” ve “else” yapılarını kullanarak null değer alıp almadığını kontrol edebiliriz. Ayrıca, Elvis operatörü “?:” kullanarak da null değer alması durumunda varsayılan bir değer atayabiliriz.
  3. Safe call işlemleri yapmak: Nullable değişkenlere erişirken, null değer alabilme ihtimalini göz önünde bulundurmak önemlidir. Bu nedenle, nullable değişkenlere “.” yerine “?.” işaretini kullanarak safe call işlemleri yapabiliriz. Bu sayede, değişken null değer alırsa hata almak yerine null değer dönecektir.
  4. Late initialization kullanmaktan kaçınmak: Kotlin’de, bir değişkenin ilk değerini daha sonra atamak için “lateinit” özelliğini kullanabiliriz. Ancak, bu özellik nullability hatalarını önlemek için önerilmez, çünkü değişkenin değeri null olabilir ve null kontrol işlemleri yapmak zorunda kalabiliriz. Bunun yerine, nullable bir değişken kullanarak daha güvenli bir yaklaşım benimseyebiliriz.
  5. null güvenliği konusunda linter araçlarını kullanmak: Kotlin, nullability hatalarını önlemek için çeşitli linter araçlarına sahiptir. Bu araçlar, kodunuzdaki nullability hatalarını tespit etmenize ve düzeltmenize yardımcı olabilir. Linter araçlarını kullanarak, null güvenliği konusunda daha dikkatli bir kod yazımı süreci izleyebiliriz.

2. Overusing Extension Functions

Bir önceki yazımız da extension fonksiyonlarının yararlarından bahsetmiştik. Burada da bu konunun fazla kullanımın da oluşabilecek problemlerden bahsedeceğiz.

Extension fonksiyonlar, mevcut bir sınıfın veya veri türünün yeteneklerini genişletmek için kullanılan Kotlin programlama dilindeki bir özelliktir. Bunlar, mevcut sınıflara yeni fonksiyonlar eklemek için kullanılabilen bir tür syntactic sugar’dır.

Extension fonksiyonları, mevcut sınıfın dışında tanımlanır, ancak onun üyeleriymiş gibi kullanılabilirler. Bu, extension fonksiyonlarının, özellikle SDK’ların ya da üçüncü taraf kütüphanelerin sağladığı sınıflara yeni fonksiyonlar eklemek için kullanıldığı durumlarda oldukça kullanışlı olmasını sağlar.

Ancak, extension fonksiyonlarının aşırı kullanımı dezavantajlara yol açabilir. İşte bazı olumsuzluklar:

  1. Karmaşıklık: Extension fonksiyonları, mevcut sınıflara yeni fonksiyonlar eklemek için kullanıldığında, kodun karmaşıklaşmasına neden olabilir. Bu, kodun okunabilirliğini azaltabilir ve bakımını zorlaştırabilir.
  2. Gizlilik: Bir sınıfa ait olmayan fonksiyonlar eklemek, o sınıfın iç durumuna erişmeyi gerektirebilir. Bu, encapsulation prensiplerine ters düşebilir ve güvenlik sorunlarına yol açabilir.
  3. İsim çatışmaları: Birden çok extension fonksiyonu, aynı adı taşıyabilir. Bu durumda, hangi fonksiyonun çağrılacağını belirlemek zor olabilir. İsim çatışmaları, farklı kütüphanelerde veya modüllerde aynı ismi kullanan extension fonksiyonları ekleme riskini de beraberinde getirebilir.
  4. Eşgüdüm sorunları: Extension fonksiyonları, temel sınıfın içeriğini bilmeyebilir veya temel sınıfın sonraki versiyonlarına uyumsuz hale gelebilir. Bu durumda, temel sınıfın güncellenmesi veya değiştirilmesi durumunda extension fonksiyonlarının uyumlu olması gereken sorunlar ortaya çıkabilir.
  5. Bu nedenlerle, extension fonksiyonlarının aşırı kullanımından kaçınmak önemlidir. Onları uygun bir şekilde ve sınırlı bir şekilde kullanmak, kodun okunabilirliğini artırır ve gelecekteki güncellemelere uyum sağlama sürecini kolaylaştırır.

3. Genel Hatalar

Hala findViewById veya Kotlin sentetiklerini kullanıyor olmamız yaptığımız genel hatalardan biridir. bu kullanımlar detayları kia hatalara neden oluyor,

Performans sorunları,Hem findViewById hem de Kotlin sentetikleri, belirli bir görünümü bulmak için çalışma zamanında görünüm hiyerarşisini geçer ve bu, performansın yavaşlamasına ve bellek kullanımının artmasına neden olabilir.

Null Pointer Exception,Bu iki yaklaşımdan biri kullanılarak bir görünüm bulunamazsa, çalışma zamanında NPE’ye neden olabilecek şekilde null değerini döndürür.

Tip güvenliği yok,findViewById yöntemi tür güvenliği sağlamaz. Bu, türleri manuel olarak dönüştürmeniz gerekeceği anlamına gelir, bu da çalışma zamanında ClassCastException’a yol açabilir.

Bu yüzden viewbinding kullanmaya özen göstermeliyiz.

Kotlin Kütüphaneleri kullanmamak,
Kotlin, ortak veri yapıları ve görevlerle çalışmak için birçok yararlı işlev ve yardımcı program sağlayan zengin bir Standart Kitaplık ile birlikte gelir. Ancak, bazı geliştiriciler bu özelliklerin farkında olmayabilir ve bunun yerine kendi özel çözümlerini uygulamaya koyabilir.

Gündelik olarak karşılaştığım bir kaç örneği sizlerle paylaşıp farkındalık kazandırmak istedim. Daha detaylı yazılar için takipte kalmaya devam edin :)

Herkese iyi kodlamalar

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response