Java’ya yeni girenlerin büyük çoğunluğu ilk günlerde aynı soruyu soruyor: “Method dediğimiz şey tam olarak ne işe yarıyor?” Açık konuşayım — mesele sadece kodu bölmek değil. Method, programın nefes almasını sağlayan küçük bir düzen kuruyor. Bir iş yapıyor, bitiriyor, gerekirse sonuç dönduruyor (buna dikkat edin). hepsi bu kadar gibi görünse de, işin aslına bakarsanız Java’da method kullanımı yazılımın omurgalarından biri.
Bakın, Ben bunu ilk kez 2009’da İstanbul’da küçük bir staj projesinde fark etmiştim. Tek dosyada büyümüş bir Java sınıfı vardı; her şey main() içine yığılmıştı. Dosya 900 satırı geçince kimse neyin nerede başladığını anlamıyordu artık. Sonra ufak ufak method’lara ayırdık — resmen kodun havası değişti. Aynı proje, aynı ekip… ama bambaşka bir rahatlık geldi.
Durun, bir saniye.
Şöyle ki, Bu yazıda lafı gevelemeden Java’daki method mantığını konuşacağız. Void method nedir, return eden method nasıl çalışır, akış nasıl ilerler, pratikte neden bu kadar önemli olur — hepsini günlük dille anlatacağım. Araya biraz da benim sahada gördüğüm örnekleri serpiştireceğim; çünkü teoriyi biliyoruz da, masa başında işler bazen öyle yürümüyor.
Method Mantığı: Küçük Parça, Büyük Etki
Yani, Method’u en basit haliyle şöyle düşünün: mutfakta bir tarif var. Siz o tarifi her seferinde sıfırdan anlatmak yerine küçük adımlara bölüyorsunuz. Önce malzemeler hazırlanıyor, sonra karıştırılıyor, sonra pişiyor. Java’da da method tam olarak buna benziyor — tek parça devasa bir kod yerine işi parçalıyorsunuz.
Aslında dur, önce şunu söyleyeyim: method yalnızca tekrar eden kodu azaltmıyor. Bakım işini de bayağı kolaylaştırıyor, düşündüğünüzden fazla. Yarın bir gün aynı işlemi değiştirmek gerektiğinde tek bir yere dokunuyorsunuz; bu kadar. Kurumsal projelerde bunun kıymeti çok daha net ortaya çıkıyor — çünkü on kişilik ekipte bile aynı işin üç farklı versiyonu dolaşmaya başlıyor, insan şaşırıyor.
Ve işler burada ilginçleşiyor.
Bak şimdi, Geçen yıl Ankara’da çalıştığım kısa süreli bir danışmanlık işinde bunu yine gördüm. Ekip login sonrası kullanıcı puanı hesaplayan üç ayrı metodu farklı dosyalarda tutmuştu. Birinde yüzde hesabı vardı, diğerinde yuvarlama farklıydı… sonradan hata bulmak tam bir çileye dönüştü. Methodları düzgün kurgulamak işte bu yüzden önemli (buna dikkat edin)
Void Method Ne Demek?
Void method adı üstünde değer döndürmeyen method demek. Yani işi yapar ama sana “al bunu” diye bir sonuç vermez (ben de ilk duyduğumda şaşırmıştım). Ekrana mesaj yazdırır, veri kaydı başlatır ya da sadece yan etki üretir — evet, teknik tabiri böyle. Kullanıcıya çıktı vermek için sıkça kullanılır.
Ve işler burada ilginçleşiyor.
Şöyle düşünün: kahve makinesine basıyorsunuz ve makine kahveyi hazırlayıp bardağa koyuyor. “Kaç mililitre çıktı?” diye ayrıca sormuyorsunuz; sonuç zaten işin içinde gizli (yanlış duymadınız). Void method biraz böyle çalışıyor. Kimi zaman yeterli oluyor… kimi zamansa yetmiyor.
Return Eden Method Neden Daha Esnek?
Bir method’un size sayı, metin ya da nesne döndürmesi gerekiyorsa return devreye giriyor. Mesela not ortalaması hesaplıyorsanız ortalamayı geri almak istersiniz; grade belirliyorsanız bazen sadece ekrana yazdırmak yetmez, başka yerde de kullanmak istersiniz (en azından benim deneyimim böyle) Daha fazla bilgi için Yapay Zeka Destekli Google Finans Türkiye’de: Ne Değişti? yazımıza bakabilirsiniz.
Bi saniye — Bence yeni başlayanların en çok karıştırdığı yer burası. “Void ise kötü mü?” Hayır. “Return varsa daha mı iyi?” O da değil. İhtiyaç neyse o kullanılmalı — bazen tek amaç işlem yaptırmaktır, bazen de o işlemin sonucunu başka yere taşımak gerekir. Bu kadar.
İşte tam da bu noktada devreye giriyor.
Java’da iyi tasarlanmış method’lar kodu sadece okunur yapmaz; hata ayıklamayı da hızlandırır.
Kod Akışı Nasıl Çalışıyor?
Main() çoğu zaman başlangıç noktasıdır ama hikâye burada bitmez. Nesne oluşturulur, sonra ilgili method çağrılır ve kontrol oraya gider — iş tamamlanınca akış tekrar ana programa döner ve yoluna devam eder. Basit.
Bunu ilk kez canlı canlı izlediğimde kafamda netleşmişti; 2017’de Kadıköy’de bir eğitim sırasında hoca tahta üstünde oklarla anlatmıştı. Ben içimden “ha demek mesele buymuş” demiştim. En çok da yeni başlayanlar için bu akışı görselleştirmek çok işe yarıyor — soyut kavram somutlaşıyor çünkü.
main()
│
│ object oluştur
▼
Display casio = new Display()
│
│ method çağrısı
▼
casio.add()
│
▼
add() çalışır
│
▼
return;
│
▼
kontrol main()'e döner
│
▼
program biter
Size bir şey söyleyeyim, Dikkat edin burada add() hiçbir şey döndürmese bile akışın yönünü etkiliyor. İşte method’un gücü biraz da burada yatıyor; görünmez ama oyunun ritmini belirliyor.
Sayı Hesaplama Örneği Üzerinden Düşünelim
Not toplama örneği üzerinden yürümek iyi oluyor çünkü herkes anlayabiliyor ve konu dağılıp gitmiyor (şaşırtıcı ama gerçek). Dört beş sayı alıp toplamını çıkarıyorsunuz, sonra ortalama buluyorsunuz, ardından grade veriyorsunuz. Klasik ama öğretici. Korku Filminde Jump Scare Öncesi Uyarı: Binge Nedir? yazımızda bu konuya da değinmiştik.
| Aşama | Ne Yapılıyor? | Dönen Değer |
|---|---|---|
| sumMarks() | Puanlar toplanıyor | Total |
| average() | Total / 5 hesaplanıyor | Ortalama |
| grade() | Puan aralığına göre harf veriliyor | Ekrana çıktı |
Açık konuşayım, Bu yapı bana hep küçük üretim hatlarını hatırlatıyor. Ham madde giriyor, işlemden geçiyor, son ürüne dönüşüyor. sumMarks() giriş noktası gibi davranıyor; average() ara istasyon; grade() ise final karar mekanizması. Temiz.
Neden Bu Ayrım Güzel Çalışıyor?
Doğrusu, Cevap aslında basit: her adım bağımsız hale geliyor. Mesela ileride beş ders yerine yedi ders almanız gerekirse sumMarks() tarafını genişletirsiniz; ortalama hesabını da ona göre güncellersiniz ya da neredeyse tamamen dinamik hale getirirsiniz. Başka hiçbir şeye dokunmak zorunda kalmıyorsunuz.
Açık konuşayım, öğrenci projelerinde bu tarz örnekler fazla steril kalabiliyor — ama öğretmek için fena değil, hatta bayağı işe yarar bir başlangıç sunuyorlar. Ha bu arada küçük startup’larda benzer mantığı e-ticaret sepetlerinde de görüyorum; toplam tutar ayrı fonksiyonla geliyor, indirim ayrı hesaplanıyor, kargo ayrı geliyor. Hepsini tek yerde toplarsanız iş çorba oluyor. Garip ama her seferinde aynı hatayı yapıyorlar.
Küçük Proje ile Kurumsal Sistem Arasındaki Fark
Küçük bir ödevde void add() ile işi kapatabilirsiniz. Tamamdır gitti. Ama enterprise tarafta durum değişiyor — orada yöntemler arasındaki sınırlar bulanıklaşırsa bakım maliyeti ciddi şekilde yükseliyor.
Bir gün logging eklemek istersiniz. Ertesi gün test yazmak zorunda kalırsınız. Sonra fark edersiniz ki aslında üç class birbirine dolanmış vaziyette. İşte o an can sıkılır. Gerçekten sıkılır.
Açık konuşayım, Neyse uzatmayayım: küçük projede amaç öğrenmek olabilirken büyük sistemde amaç sürdürülebilirliktir. Ben 2024 başında İzmir’deki orta ölçekli bir SaaS ekibinde buna benzer bir refactor gördüm (bizzat test ettim). Tekrarlayan hesaplamaları üç farklı yardımcı metoda bölünce test süresi düştü, bug sayısı azaldı, hatta ekipten biri “nihayet debug ederken gözüm ağrımadı” demişti. Abartmıyorum. React Hooks’u Anlamak: Kuralların Arkasındaki Gerçek yazımızda bu konuya da değinmiştik. Java’da Method Overloading: Aynı İsim, Farklı İş yazımızda da bu konuya değinmiştik.
Küçük Startup İçin İdeal Yaklaşım
- Kod okunur olsun.
- Error handling en azından temel seviyede olsun.
- Maksimum sade yapı tercih edilsin.
- Aynı işi yapan iki ayrı yöntem olmasın.
Kurumsal Uygulamada Dikkat Edilecekler
- Teslim edilen her method için test düşünülmeli.
- Sorumluluk ayrımı net tutulmalı.
- Naming standard şart olmalı.
- `public` / `private` ayrımı rastgele yapılmamalı.
Sık Yapılan Hatalar ve Ufak Tuzaklar
Şunu söyleyeyim, Bazı öğrenciler her şeyi `public static void` yapıp geçiyor. İlk bakışta sorun yok gibi duruyor — ama ileride esneklik kayboluyor. Mesela nesne tabanlı yapıda instance method kullanmanız gerekirken sırf kolay diye static’e abanırsanız mimari biraz yamulur. Azıcık değil… Hani ne farkı var diyorsunuz, değil mi? bariz şekilde yamulur.
Bir diğer klasik hata da isimlendirme (bizzat test ettim). `doStuff()`, `processData()` ya da `handle()` gibi genel isimler kulağa rahat geliyor ama kodun anlamını ölduruyor — daha doğrusu belirsizleştiriyor. Kod okurken tahmin yürütmeye başlıyorsanız orada bir problem var demektir. Ben buna “isim tuzağı” diyorum. Çünkü insan önce kelimeyi okuyor, işlevi sonra anlıyor, o sırada vakit gidiyor.
Daha Temiz Yazmak İçin Mini Kontrol Listesi
- Method tek görev mi yapıyor?
- Dönüş tipi doğru mu seçilmiş? (bu kritik)
- İsim okunca ne yaptığı anlaşılıyor mu?
- Aynı mantık başka yerde tekrarlanmış mı? — ciddi fark yaratıyor
Senden Beklenen Şey Aslında Çok Basit
Mesele Java’daki sözdizimini ezberlemek değil yalnızca. Asıl mesele şunu görmek: method’lar sayesinde programın zihni bölünüyor, parçalara ayrılıyor, daha yönetilebilir hale geliyor.
Bunun kıymetini ancak gerçek proje büyüyünce anlıyorsunuz. Kendi adıma söyleyeyim — küçük script’lerde pek umursamadığım birçok detay, büyük sistemlerde kritik hale geldi. Yani evet… method konusu başlangıç seviyesi gibi görünür ama altyapısı sağlam kurulursa sizi ileri taşır. Yoksa sonraki aşamalarda sürekli duvara toslarsınız. Sade gerçek bu. Ayrıca SonarQube mu PMD mi? Java Kodunu Kurtaran Seçim, temiz method tasarımının neden otomatik kalite araçlarıyla birlikte düşünülmesi gerektiğini güzel gösteriyor.
Sıkça Sorulan Sorular
Java’da void method ne işe yarar?
Void method herhangi bir değer döndürmeden işlem yapar. Genelde ekrana yazdırma, nesne güncelleme yan etki üretme gibi durumlarda kullanılır. Eğer sonucu başka yerde kullanmayacaksanız gayet uygundur.
Dönüş değeri olan yöntem mi yoksa void mi tercih edilmeli?
Ihtiyaca göre değişir. Sonucu başka yerde kullanacaksanız dönüş değeri olan metod daha uygundur. Sadece işlem yapmak istiyorsanız void de yeterlidir.
Main() dışındaki yöntemler neden önemli?
Main(), programın giriş kapısıdır ama asıl iş genelde diğer yöntemlerde yapılır. Kodun okunabilirliği, test edilebilirliği. Bakım kolaylığı açısından bunlar çok değerlidir.
Küçük projelerde de yöntemi parçalara ayırmak gerekir mi?
Evet, özellikle alışkanlık kazanmak için gerekir. Küçük projede kurulan düzgün yapı, büyüyen projelerde sizi ciddi şekilde rahatlatır. Baştan temiz başlamak genelde daha az uğraştırır.
Kaynaklar ve İleri Okuma
Oracle Java Tutorials — Methods Bölümü
GeeksforGeeks — Methods in Java
Bu içerik işinize yaradı mı?
Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.



