Spagetti Akışından Kaçınma
Etiketlerin ne zaman yararlı veya zararlı olduğunu öğrenin.
Spagetti Akışından Kaçınma, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
Spagetti Akışı Nedir
"Spagetti akışı", yolu dolaşmış eriştelere benzer biçimde o kadar çok sıçrayan ve izlenmesi zor olan kodu ifade eder.
Çok sayıda break, continue ve etiketin bir arada kullanılması bu karmaşayı oluşturabilir.
Bu derste amaç, döngülerinizin açık kalması için akış denetimini bilinçli biçimde kullanmayı göstermektir.
Etiketler Güçlüdür, Ancak Risklidir
Etiketli break ve continue yararlı araçlardır; ancak kodun birden çok döngü üzerinden sıçramasına izin verirler.
Her yerde kullanıldıklarında okuyucuyu aynı anda birçok olası yolu izlemeye zorlarlar.
Amaç etiketlerden tamamen kaçınmak değil, yalnızca mantığı gerçekten basitleştirdiklerinde kullanmaktır.
Karmaşık Bir Örnek
Bu döngü, etiketli bir continue'u, etiketli bir break'i ve yalın bir break'i aynı yerde birleştirir.
Çalışır; ancak akışı takip etmek ciddi çaba gerektirir. Bu bir uyarı işaretidir.
public class Main {
public static void main(String[] args) {
outer:
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (j == 1) continue outer;
if (i == 2) break outer;
if (i + j == 3) break;
System.out.println(i + "," + j);
}
}
}
}Bir Yöntemle Yeniden Düzenleme
Çoğu zaman en temiz çözüm, iç döngüyü kendi yöntemine taşımak ve return kullanmaktır.
Bir yöntemden dönmek, hiçbir etiket kullanmadan temiz biçimde çıkmanızı sağlar.
public class Main {
static int findFirst(int[] arr, int target) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == target) {
return i;
}
}
return -1;
}
public static void main(String[] args) {
int[] nums = {5, 8, 3, 9};
System.out.println(findFirst(nums, 3));
}
}return Neden Daha Anlaşılır
Yukarıdaki yöntemde return i;, bir eşleşme bulunur bulunmaz aramayı durdurur.
İzlenecek etiket, bayrak değişkeni veya iç içe break yoktur.
İç içe aramalarda bir yöntem çıkarıp dönüş yapmak genellikle etiketli break kullanmaktan daha anlaşılırdır.
Açık Koşulları Tercih Edin
Bazen break veya continue kullanmanız hiç gerekmez. İyi yazılmış bir döngü koşulu aynı fikri ifade edebilir.
Burada break kullanmadan, değer bulunduğunda doğal biçimde duruyoruz.
public class Main {
public static void main(String[] args) {
int[] nums = {2, 4, 6, 8};
int i = 0;
boolean found = false;
while (i < nums.length && !found) {
if (nums[i] == 6) {
found = true;
} else {
i++;
}
}
System.out.println(found ? "Found at " + i : "Missing");
}
}continue ile Koruyucu Koşullar
Yalın bir continue iç içeliği gerçekten azaltabilir. İstemediğiniz öğeleri erkenden atlayın, ardından ana mantığı düz tutun.
Bu, if ifadelerinden oluşan derin bir piramidi önler.
public class Main {
public static void main(String[] args) {
String[] names = {"Ann", "", "Bob", ""};
for (String name : names) {
if (name.isEmpty()) {
continue;
}
System.out.println("Hello, " + name);
}
}
}Etiketli break Ne Zaman Gerekçelidir
Etiketler yasak değildir. Gerçek bir iç içe aramada kullanılan tek bir etiketli break en açık seçenek olabilir.
Ölçüt dürüstlüktür: Etiket amacı belirgin hâle mi getiriyor, yoksa bir karmaşayı mı gizliyor?
Amacı belli tek bir etiket, üç bayrak değişkeninden daha iyidir.
public class Main {
public static void main(String[] args) {
int[][] grid = {{1, 2}, {3, 4}};
scan:
for (int[] row : grid) {
for (int v : row) {
if (v == 3) {
System.out.println("Found 3");
break scan;
}
}
}
}
}Derin İç İçe Yapılardan Kaçının
Spagetti kod çoğu zaman dört ya da beş düzey iç içe geçmiş döngülerden kaynaklanır.
Bu derinliğe ulaşırsanız, bir yardımcı metodun, farklı bir veri yapısının ya da bir akışın mantığı sadeleştirip sadeleştiremeyeceğini düşünün.
Daha az iç içe kodu anlamak, akıllıca görünen atlamaları anlamaktan daha kolaydır.
Basit Bir Kontrol Listesi
Bir etiket eklemeden önce şunları sorun: Bir metot geri döndürme kullanarak bunu yapabilir mi? Açık bir döngü koşulu bunu sağlayabilir mi? Koruyucu koşuldaki devam bunu sağlayabilir mi?
Evetse bunları tercih edin. Etiket hâlâ en basit seçenekse onu kullanın ve iyi bir ad verin.
Önce Okunabilirlik
Akış denetimi, zekâ gösterisi için değil, açıklık için kullanılan bir araçtır. En iyi döngü, ekip arkadaşınızın bir bakışta anlayabildiği döngüdür.
Atlamaları az tutun, etiketlere anlamlı adlar verin ve iç içelik arttığında metotları ayırın.
Bunu yaptığınızda akışınız düzenli kalır; asla spagetti koda dönüşmez.
Hızlı Kontrol
Çoğu durumda iç içe geçmiş bir aramadan çıkmanın en temiz yolunu seçin.
Özet
Spagetti akış, birbirine dolanmış çok fazla atlamadan kaynaklanır. Bundan kaçınmak için geri döndürme kullanan metotları, açık döngü koşullarını ve koruyucu koşuldaki devam ifadesini tercih edin.
Etiketli çıkış veya devamı yalnızca iç içe geçmiş bir aramayı gerçekten daha anlaşılır hâle getiriyorsa kullanın ve etiketlere her zaman iyi adlar verin.
Sıkça Sorulan Sorular
“Spagetti Akışından Kaçınma” dersi ücretsiz mi?
Evet — “Spagetti Akışından Kaçınma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Spagetti Akışından Kaçınma” dersinde ne öğreneceğim?
Etiketlerin ne zaman yararlı veya zararlı olduğunu öğrenin. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Spagetti Akışından Kaçınma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- break ve continue
- Etiketli break
- Etiketli continue
- Spagetti Akışından Kaçınma