Programlama

Java’da Method Nedir? Kısa Kodla Büyük İşler

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.

💡 Bilgi: Bir class içindeki method sayısı arttıkça her method’un tek bir işe odaklanması daha önemli olur. “Bir method = bir sorumluluk” kuralı çoğu projede hayat kurtarıyor.

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

  1. Method tek görev mi yapıyor?
  2. Dönüş tipi doğru mu seçilmiş? (bu kritik)
  3. İsim okunca ne yaptığı anlaşılıyor mu?
  4. Aynı mantık başka yerde tekrarlanmış mı? — ciddi fark yaratıyor
💡 Bilgi: Eğer derste ya da kendi projenizde karışıklık yaşıyorsanız önce tüm işlemleri tek tek yazın… sonra ortak işleri ayıklayıp ayrı metoda taşıyın. Bu yöntem garip biçimde hızlı sonuç veriyor. Son teknik notu da düşeyim: method tasarımı aslında kod estetiğidir. Göz yoruyorsa genelde mimari de yoruyordur.

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ü

Baeldung — Java Methods Guide

GeeksforGeeks — Methods in Java

Aşkın KILIÇ

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

← Onceki Yazi
Yapay Zeka Destekli Google Finans Türkiye’de: Ne Değişti?
Sonraki Yazi →
Google’ın Canlı Çevirisi Telefona Geliyor: İngilizce Bariyeri Sarsılıyor

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Kategoriler
Ara
Paylaş
İçindekiler
← Yapay Zeka Destekli Google Fin...
Google’ın Canlı Çevirisi Telef... →
📩

Gitmeden önce!

Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

📬 Haftalık bülten: Teknoloji + AI haberleri