Köşe Yazısı 25 Şubat 2026 03:00

Bir Satır Kodun İmparatorluğu

Arda Akgür
Yazar Arda Akgür

Bir uygulama gördüğümüzde büyüleniyoruz.

Butonlar, animasyonlar, veri akışı, kullanıcı paneli, ödeme sistemleri, bildirimler…

Her şey akıyor.

Ama o dev sistemlerin içinde ne var biliyor musunuz?

Çoğu zaman şuna benzeyen bir satır kod:

if (user == null) {

throw new IllegalStateException("User not found");

}

Basit değil mi?

Ama işte mesele tam da burada başlıyor.

Basit Kod Yoktur, Bağlam Vardır

Programlama dünyasında bir yanılgı var:

“Kod basit görünüyor, demek ki küçük bir şey.”

Hayır.

Kod tek başına bir anlam taşımaz.

Onu değerli yapan bağlamdır.

Bir mobil uygulamada kullanıcı giriş ekranını düşünün.

Eğer user == null kontrolü yapılmazsa:

● Yetkisiz erişim olur.

● Veritabanı çöker.

● Ödeme sistemi yanlış kişiye çalışır.

● Güvenlik açığı oluşur.

Yani küçücük bir if bloğu, aslında koca bir sistemin bekçisidir.

Programlama Aslında Modelleme İşidir

Büyük uygulamalar yazarken yaptığımız şey şudur:

Gerçek dünyayı modellemek.

Bir üniversite sistemi düşünelim:

● Öğrenci

● Ders

● Not

● Kayıt

Bunlar yazılımda birer class olur.

public class Student {

private String name;

private int id;

}

Bu kadar basit mi?

Hayır.

Çünkü o class:

● Veritabanına yazılır.

● API üzerinden taşınır.

● GUI’de gösterilir.

● Test edilir.

● Başka sınıflarla ilişki kurar.

Bir Student sınıfı aslında bir organizasyon modelidir.

Hafıza, Yığın, Referanslar: Görmediğimiz Katman

Kod yazarken çoğu kişi sadece değişkeni görür.

Ama Java’da bir Student s = new Student(); yazdığınızda:

● Stack’te bir referans oluşur.

● Heap’te bir obje yaratılır.

● Garbage Collector onu takip eder.

Bu görünmeyen katmanlar, büyük sistemlerin performansını belirler.

Basit görünen kod, aslında makine seviyesinde karmaşık bir orkestradır.

Collections: Kaosun Düzenlenmesi

Bir uygulama büyüdüğünde tek tek değişkenlerle yaşayamaz.

Liste gerekir.

Set gerekir.

Map gerekir.

List students = new ArrayList<>();

Bu satır bir veri yapısı seçimi demektir.

Yanlış seçim:

● Performans düşürür.

● Bellek tüketimini artırır.

● Ölçeklenebilirliği bozar.

Doğru seçim:

● Sistemi taşıyabilir.

Büyük sistemler doğru soyutlamalar üzerine kurulur.

Test Olmadan Büyük Sistem Kurulmaz

Gerçek profesyonellik kod yazmak değildir.

Kodun çalıştığını kanıtlamaktır.

assertEquals(5, calculator.add(2,3));

Bu satır bir güvenlik ağıdır.

Test yoksa sistem büyüyemez.

Büyüyen sistem test edilmezse çöker.

Generics: Geleceği Düşünmek

Bir yazılımı büyütecek şey tekrar kullanılabilirliktir.

public class Holder {

private T value;

}

Bu basit yapı, onlarca farklı veri tipini taşıyabilir.

Yani yazdığınız kod:

● Sadece bugünü değil

● Yarınki genişlemeyi de düşünmelidir.

GUI: Kullanıcının Gördüğü Yüz

Bir buton tıklanır.

button.setOnAction(event -> doSomething());

Kullanıcı için bu sadece bir tıklamadır.

Ama arkasında:

● Event sistemi

● Thread yönetimi

● Callback mekanizması

● State değişimi vardır.

Küçük bir event handler, aslında sistemin sinir sistemidir.

Büyük Uygulama = Küçük Doğru Parçalar

Devasa uygulamalar sihirle yazılmaz.

● Küçük sınıflar

● Temiz sorumluluklar

● Net arayüzler

● Sağlam testler

● Doğru veri yapıları

Bunlar birleşince “büyük sistem” olur.

Sonuç

Programlama büyüklük meselesi değildir.

Doğru soyutlama meselesidir.

Bir satır kod:

● Güvenlik olabilir.

● Performans olabilir.

● Mimari karar olabilir.

● Ya da sistemin çöküş sebebi olabilir.

Genç yazılımcılara hep şunu söylüyorum:

“Basit kod yazın ama basite almayın.”

Çünkü bir gün yazdığınız küçük bir sınıf,

milyonlarca kullanıcısı olan bir uygulamanın omurgası olabilir.

Ve o gün geldiğinde,

o küçük if bloğu bir imparatorluğu ayakta tutuyor olabilir.

Arda Akgür

Arda Akgür

Medyabir Ajans yazar kadrosunda gündeme dair değerlendirmeleri ve özgün bakış açısıyla okurlarıyla buluşuyor.

Yazarın tüm yazıları