Koruma Yan Tümceleri
Temiz erken dönüşler
Koruma Yan Tümceleri, CoddyKit'te ücretsiz bir Ruby 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, Ruby Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Ruby Academy kursu toplamda 4 dersten oluşur.
Temiz Erken Dönüşler
Koruma koşulu, bir yöntemin başında yer alan ve geçersiz veya uç durumlarda erken dönüş yapan bir denetimdir. Ana mantığı düz ve okunması kolay tutar.
def greet(name)
return "Hello, stranger" if name.nil?
"Hello, #{name}"
end
puts greet(nil)
puts greet("Ada")Sorun: Derin İç İçe Yapı
Koruma koşulları olmadan doğrulamalar iç içe if blokları halinde birikir. Asıl iş, ekranın sağ kenarının derinliklerinde gömülü kalır.
def charge(user)
if user
if user[:active]
puts "Charging #{user[:name]}"
end
end
end
charge({ name: "Sam", active: true })Çözüm: Koruma Koşulları
Her koşulu tersine çevirip erken dönüş yapın. Artık normal akış temel girinti düzeyinde, ek girinti olmadan ve açıkça görünür.
def charge(user)
return unless user
return unless user[:active]
puts "Charging #{user[:name]}"
end
charge({ name: "Sam", active: true })Değersiz return
Tek başına kullanılan return, yöntemden çıkar ve nil üretir. Reddedilen durum için çağıranın bir sonuca ihtiyaç duymadığı zaman bunu kullanın.
def log(message)
return if message.nil? || message.empty?
puts "LOG: #{message}"
end
log("")
log("started")Değer Döndürme
Bir koruma koşulu, makul bir varsayılan değer gibi anlamlı bir değer de döndürebilir; böylece çağıranlar her zaman kullanılabilir bir şey elde eder.
def discount(price)
return 0 if price <= 0
price * 0.1
end
puts discount(-5)
puts discount(200)unless ile Koruma
return unless condition ifadesi, “bu gereksinim karşılanmıyorsa çık” şeklinde okunur. Bu, Ruby'deki en yaygın deyimlerden biridir.
def withdraw(balance, amount)
return "Insufficient funds" unless balance >= amount
"New balance: #{balance - amount}"
end
puts withdraw(100, 150)
puts withdraw(100, 40)Birden Çok Koruma Koşulu
Girdileri tek tek doğrulamak için birkaç koruma koşulunu art arda kullanın. Her satır tek bir kuralı belirtir ve yöntemin kendi kendini açıklamasını sağlar.
def register(name, age)
return "Name required" if name.to_s.empty?
return "Must be 18+" if age < 18
"Registered #{name}"
end
puts register("", 30)
puts register("Lee", 16)
puts register("Lee", 21)Döngülerde next ile Koruma
Bir blok veya döngü içinde yalnızca tek bir yineleme için return kullanamazsınız. Bir sonraki öğeye geçmek için koruma olarak next kullanın.
[1, -2, 3, -4].each do |n|
next if n.negative?
puts n
endKoruma Koşulları Okunabilirliği Artırır
Aşağıdaki iki biçimi zihninizde karşılaştırın: koruma koşulları else kullanımını ortadan kaldırır ve girintiyi azaltır. Okuyucular önce geçersiz durumların ele alındığını, ardından temel mantığın geldiğini görür.
def area(width, height)
return 0 unless width.positive? && height.positive?
width * height
end
puts area(0, 5)
puts area(4, 5)Koruma Koşulunda Hata Yükseltme
Kötü bir girdi beklenen bir durumdan çok programcı hatasıysa, hızlı ve belirgin bir şekilde başarısız olmak için koruma koşulunda bir özel durum yükseltin.
def sqrt(n)
raise ArgumentError, "n must be >= 0" if n.negative?
Math.sqrt(n)
end
puts sqrt(16)
puts sqrt(-1) rescue puts "caught negative input"Hepsini Birleştirme
Koruma koşulları, büyük fayda sağlayan küçük bir alışkanlıktır:
- Uç durumları en başta ele alıp dönün.
- Ana mantığı ek girinti olmadan tutun.
- Duruma göre
return/next/raisekullanın.
def initials(name)
return "" if name.nil? || name.strip.empty?
name.split.map { |part| part[0].upcase }.join
end
puts initials(" ").inspect
puts initials("grace hopper")Hızlı Denetim
Koruma koşullarını anlayışınızı sınayın.
Özet
Koruma koşullarını öğrendiniz:
- Geçersiz veya uç durumlarda erken dönün.
return unless, bir gereksinim karşılanmadığında çıkar.- Bir döngü yinelemesini atlamak için
next, gerçek hatalar içinraisekullanın. - Sonuç, düz ve kendi kendini açıklayan yöntemlerdir.
def safe_divide(a, b)
return nil if b.zero?
a / b
end
puts safe_divide(10, 0).inspect
puts safe_divide(10, 2)Sıkça Sorulan Sorular
“Koruma Yan Tümceleri” dersi ücretsiz mi?
Evet — “Koruma Yan Tümceleri” 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 Ruby Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Ruby Academy kursu toplamda 4 dersten oluşur.
“Koruma Yan Tümceleri” dersinde ne öğreneceğim?
Temiz erken dönüşler Ruby 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.
Ruby Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Ruby 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.
“Koruma Yan Tümceleri” 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 Ruby Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Ruby 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
- if, unless, üçlü işleç
- case/when İfadeleri
- Ruby'de Doğruluk Değeri
- Koruma Yan Tümceleri