Kural
Kullanım erken iade ve koruma koşullarını kullanın.
Derin iç içe ve geç parametre doğrulama
yap işlevleri zorlaştırmak yapmak okunması ve bakımı daha zor hale gelir.
Desteklenen diller: 45+Giriş
Koruma koşulları, bir fonksiyonun başında ön koşulları doğrular ve koşullar karşılanmadığında hemen geri döner. Bu, hata durumlarını önceden ele alarak iç içe geçme düzeyini azaltır; böylece ana mantık iç içe geçmeden kalır ve okunması kolaylaşır. Parametreleri fonksiyonun ortasında doğrulayan veya başarı yollarını birden fazla koşullu ifadenin içine yerleştiren fonksiyonlar, okuyucuları birçok girinti düzeyi boyunca bağlamı takip etmeye zorlar.
Neden önemli?
Kod okunabilirliği: Guard koşulları, fonksiyonun sonunda “normal akış”ı iç içe geçme olmaksızın görünür kılar. Okuyucular tüm hata koşullarını baştan görürler; ardından, zihinsel olarak birden fazla iç içe geçmiş koşulu takip etmek zorunda kalmadan, tek bir girinti düzeyinde ana mantığı okurlar.
Bakım ve değişiklik: Derinlemesine iç içe geçmiş koda yeni doğrulama veya hata koşulları eklemek, mevcut mantığın bozulmasını önlemek için dikkatli bir yerleştirme gerektirir. Kodun en üst kısmında yer alan koruma cümleleri, ana mantığa dokunmadan yeni kontroller eklenmesine olanak tanıyarak hata oluşma riskini azaltır.
Kod örnekleri
❌ Uygun değil:
function processPayment(user, amount) {
if (user) {
if (user.isActive) {
if (amount > 0) {
if (user.balance >= amount) {
user.balance -= amount;
return { success: true, newBalance: user.balance };
} else {
return { success: false, error: 'Insufficient funds' };
}
} else {
return { success: false, error: 'Invalid amount' };
}
} else {
return { success: false, error: 'Inactive user' };
}
} else {
return { success: false, error: 'User required' };
}
}Neden yanlış: Dört kademeli iç içe geçme, ana mantığı (denge hesaplaması) fonksiyonun derinliklerinde gizliyor. Her hata durumu, bir girinti kademesi daha ekliyor ve bu da normal akışın bir bakışta bulunmasını ve anlaşılmasını zorlaştırıyor.
✅ Uygunluk:
function processPayment(user, amount) {
if (!user) {
return { success: false, error: 'User required' };
}
if (!user.isActive) {
return { success: false, error: 'Inactive user' };
}
if (amount <= 0) {
return { success: false, error: 'Invalid amount' };
}
if (user.balance < amount) {
return { success: false, error: 'Insufficient funds' };
}
user.balance -= amount;
return { success: true, newBalance: user.balance };
}
Bunun önemi: Koruma koşulları, erken dönüşlerle tüm ön koşulları doğrular ve fonksiyonun tek bir girinti düzeyinde kalmasını sağlar. Ana akış (bakiye kesintisi), iç içe geçme olmaksızın son kısımda açıkça görülebilir; bu da fonksiyonun okunmasını ve değiştirilmesini kolaylaştırır.
Sonuç
Guard koşullarını kullanarak fonksiyonların başında girdileri doğrulayın ve hata durumlarını işleyin. Koşullar karşılanmadığında, başarı yolunu iç içe geçirmek yerine erken dönüş yapın. Bu, kodun düz ve okunabilir kalmasını sağlar ve mevcut mantığı bozmadan değiştirilmesini kolaylaştırır.

