Kural
Kontrol bölücü öncesinde bölme işlemlerinden önce
Bölme ile sıfır , çalışma çökmelere ve
mutlaka önlenmelidir önlenmelidir açıkça açık kontrollerle
Desteklenen diller: 45+Giriş
Sıfıra bölme işlemi, çoğu programlama dilinde anında çalışma zamanı hatalarına yol açar ve uygulamaların sorunsuz bir şekilde kademeli olarak devre dışı kalmasına izin vermeden çökmesine neden olur. Kullanıcı girdileri, hesaplanan değerler veya veritabanı sonuçları, beklenmedik bir şekilde sıfır bölücü oluşturabilir. Sınır durumundaki veriler bu hatayı tetiklediğinde, tek bir kontrolsüz bölme işlemi bile üretim hizmetlerini durdurabilir.
Neden önemli?
Sistem kararlılığı: Java, C ve Python gibi dillerde sıfıra bölme işlemi, uygulamanın anında çökmesine neden olabilir. Üretim ortamında bu durum, isteklerin kaybolması, işlemlerin kesintiye uğraması ve hizmetin kullanılamaması anlamına gelir. Sıfıra bölme işleminin Sonsuzluk veya NaN, bu değerler hesaplamalar boyunca yayılır ve hatalı sonuçlara yol açar.
Veri bütünlüğü: Toplu işleme veya veri akışları sırasında bölme hataları meydana geldiğinde, sistem çökmeden önce kısmi sonuçlar yazılabilir. Bu durum, verilerin tutarsız bir duruma düşmesine neden olur; bu da manuel kurtarma işlemini gerektirir ve eksiksiz verilere bağlı olan sonraki aşamadaki sistemlerde bozulmalara yol açabilir.
Saldırı yüzeyi: Saldırganlar, hizmetleri çökertmek amacıyla sıfır bölenleri üreten girdileri kasıtlı olarak oluşturabilir. Bölenleri doğrulamadan hesaplama yapan API uç noktaları, hizmet reddi vektörlerine dönüşür. Tek bir kötü niyetli istek, hizmetin tamamını devre dışı bırakabilir.
Kod örnekleri
❌ Uygun değil:
function calculateAverageOrderValue(totalRevenue, orderCount) {
return totalRevenue / orderCount;
}
function calculateConversionRate(conversions, visitors) {
return (conversions / visitors) * 100;
}
Neden yanlış: Bölücü sıfır olduğunda her iki fonksiyon da çöküyor. calculateAverageOrderValue() şu durumda hata veriyor: siparişSayısı 0'dır ve calculateConversionRate() şu durumda hata veriyor: ziyaretçiler 0'dır. Bu senaryolar gerçekçidir: Yeni işletmelerin sipariş sayısı sıfır olabilir, kampanyaların ziyaretçi sayısı sıfır olabilir.
✅ Uygunluk:
function calculateAverageOrderValue(totalRevenue, orderCount) {
if (orderCount === 0) {
return 0;
}
return totalRevenue / orderCount;
}
function calculateConversionRate(conversions, visitors) {
if (visitors === 0) {
return 0;
}
return (conversions / visitors) * 100;
}Bunun önemi: Açıkça yapılan kontroller, sıfıra bölme hatalarını önler. Bölme işlemi mümkün olmadığında işlevler makul varsayılan değerler (sıfır) döndürür. Uygulama, sınır durumlarındaki girdilerde bile çalışmaya devam ederek kararlılığını ve kullanılabilirliğini korur.
Sonuç
Bölme işlemleri öncesinde bölücüleri daima doğrulayın. Uygun varsayılan değerleri döndürün, açıklayıcı hata mesajları verin ya da iş mantığına göre sıfır durumunu işleyin. Özellikle kullanıcı girdileri veya harici veriler söz konusu olduğunda, bölücülerin sıfırdan farklı olacağını asla varsaymayın.

