Kotlin’de Class İçine Kod Yazma Esasları

 


Kotlin’de Class İçine Kod Yazma Esasları

Yazar: Sami AKSOY

Kotlin ile Android geliştirirken bir noktadan sonra sorun dil bilgisi olmaktan çıkar, kodun kontrolden çıkması başlar. Bu yazıyı, Kotlin class yapısı yüzünden defalarca dağılan, sonra temizleyip rahatlayan bir geliştirici olarak yazıyorum. Amacım akademik kurallar sıralamak değil; gerçek hayatta çalışan, kafa yormayan bir sistem vermek.

Bu rehber, Kotlin’de class içine kod yazma esasları konusunda hem SEO açısından referans alınabilir hem de geliştiricinin dönüp dönüp bakacağı bir kaynak olacak şekilde hazırlandı.


Neden Bu Yazıyı Okumalısın?

  • "Dün yazdığım koda bugün ben bile yabancıyım" diyorsan
  • onCreate şişmekten patlıyorsa
  • Reklam, listener ve lifecycle birbirine girmişse
  • Kotlin class dosyaları gözünü korkutmaya başladıysa

Yalnız değilsin. Bu yazı tam olarak bu noktadan doğdu.


1. Kotlin Class Yazarken İlk Kural: Önce İskelet

Kotlin’in esnek yapısı seni hızlı kod yazmaya teşvik eder. Ama hızlı başlamak, çoğu zaman hızlı dağılmak demektir. O yüzden class açtığında ilk işin iskelet çıkarmak olsun.

class MainActivity : AppCompatActivity() {

    // VARIABLES

    // LIFECYCLE

    // SETUP

    // USER ACTIONS

    // BUSINESS LOGIC

    // HELPERS
}

İçleri boş olabilir, hatta saatlerce boş kalabilir. Önemli olan, kodu nereye koyacağını baştan bilmendir.


2. Kotlin’de Class İçinde Fonksiyon Yazma Mantığı

Kotlin derleyicisi fonksiyonların sırasıyla ilgilenmez. Ama sen ilgilenmezsen, dosya çok kısa sürede çöplüğe döner.

Fonksiyon Tanımı

fun fonksiyonAdi(parametre: Tip): DonusTipi {
    // işlemler
}

Dönüş tipi belliyse yazmak zorunda değilsin. Kotlin burada senin yükünü alır.


3. Profesyonel Kotlin Class Sıralaması (Android Odaklı)

Bu sıralama Google Android clean code yaklaşımıyla uyumludur ve büyük projelerde kafa kurtarır.

class SampleActivity : AppCompatActivity() {

    companion object {
        private const val TAG = "SampleActivity"
    }

    private lateinit var binding: ActivitySampleBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setupUI()
        setupListeners()
        setupAds()
    }

    private fun setupUI() {}

    private fun setupListeners() {}

    private fun onButtonClicked() {}

    private fun calculateResult() {}

    private fun formatText() {}
}

Dosyayı açan biri yukarıdan aşağıya okuduğunda, uygulamanın akışını zihninde canlandırabiliyorsa doğru yoldasın.


4. onCreate İçin Altın Kural: Detay Yok

onCreate, iş yapan yer değil; işi başlatan yerdir.

Kötü örnek:

override fun onCreate(...) {
    button.setOnClickListener { ... }
    loadAd()
    checkUser()
    // derken dosya büyür
}

İyi örnek:

override fun onCreate(...) {
    setupUI()
    setupListeners()
    setupAds()
}

onCreate sade kaldıkça, class kontrol altında kalır.


5. Tek Yer – Tek Sorumluluk Prensibi

Dünkü kod karmaşalarının neredeyse tamamı bu kuralın ihlalinden çıkar.

private fun onSupportButtonClicked() {
    showRewardedAd()
}

Bir davranış birden fazla yerde yazılıyorsa, sorun yakındır.


6. Reklam Kodları Kotlin Class’ı Nasıl Bozar?

Android projelerinde reklam entegrasyonu, düzgün ayrılmazsa class yapısını çökertebilir.

private fun loadRewardedAd() {}
private fun showRewardedAd() {}
private fun onRewardEarned() {}

Yükleme, gösterme ve sonuç asla aynı fonksiyonun içinde olmamalıdır.


7. Kotlin Fonksiyon İsimlendirme Kuralları

  • camelCase kullan
  • Fiil ile başla
  • Ne yaptığını tek bakışta anlat

8. Kod Yazdıktan Sonra Mini Refactor Rutini

  • Aynı kodu görüyorsan fonksiyonlaştır
  • Uzun fonksiyonları böl
  • Yanlış yerde duran fonksiyonu taşı
  • Android Studio > Refactor > Extract Method kullan

9. Akılda Kalıcı Özet

İskelet → Gruplama → Sade lifecycle → Tek sorumluluk

Kotlin’de temiz class yazmak bir yetenek değil, alışkanlıktır.


Son Söz

Bu yazı, teorik kurallardan değil; gerçek Android projelerinde yaşanan karmaşalardan doğdu. Eğer bu yazı sayesinde bir class dosyan daha az dağılıyorsa, amacına ulaşmıştır.


Yorum Gönder

0 Yorumlar