Kural
Kaçınılması gerekenler kullanım goto goto'dan
" goto ifadesi yapılandırılmamış yapılandırılmamış kontrol
akış oluşturur bu kodun zor yazılmasını takip ve bakımı zor.
Desteklenen diller: 45+Giriş
goto koddaki rastgele noktalara doğrudan atlar ve yürütmenin doğal akışını bozar. Bu durum, durum analizi, hata işleme ve performans konusunda mantık yürütmeyi oldukça zorlaştırır. Goto kullanılarak yazılmış kodun bakımı, fark edilmeyen hatalar ve istenmeyen davranışların ortaya çıkma riskini artırır. Yapısal alternatifler ise öngörülebilir, okunabilir ve bakımı kolay kodlar üretir.
Neden önemli?
Güvenlik etkileri: Yapılandırılmamış atlamalar, doğrulama veya yetkilendirme kontrollerini atlayabilir ve hassas işlemleri potansiyel olarak riske atabilir.
Performans üzerindeki etkisi: Karmaşık goto zincirleri, profil oluşturma ve optimizasyonu zorlaştırarak verimsiz yürütme yollarının ortaya çıkma riskini artırır.
Kod bakım kolaylığı: goto, yeniden yapılandırılması veya güvenli bir şekilde genişletilmesi zor olan, spagetti benzeri bir kontrol akışı oluşturur.
Saldırı yüzeyi: Yanlış atlamalar, istenmeden güvenli olmayan kod yollarını açığa çıkarabilir veya güvenlik açısından kritik bölümleri atlayabilir.
Kod örnekleri
❌ Uygun değil:
<?php
for ($i = 0; $i < 10; $i++) {
if ($i == 3) {
goto end;
}
echo "$i\n";
}
end:
echo "Jumped out!";
?>
Neden yanlış: goto deyimleri yapılandırılmamış döngüler oluşturur; bu da program akışını anlamayı zorlaştırır ve ek mantık eklemeyi güvenli bir şekilde yapmayı zorlaştırır.
✅ Uygunluk:
<?php
for ($i = 0; $i < 10; $i++) {
if ($i == 3) {
break;
}
echo "$i\n";
}
echo "Jumped out!";
?>
Bunun önemi: for döngüsünü kullanmak, aynı davranışı korurken kontrol akışını açık, öngörülebilir ve bakım kolaylığı sağlayan hale getirir.
❌ Uygun değil:
function process(items) {
for (const item of items) {
if (!item) {
console.error('Invalid item detected');
return false;
}
}
return true;
}Neden yanlış: goto atlamaları, hata akışını ve normal yürütmeyi belirsiz hale getirir; bu da bunları takip etmeyi veya genişletmeyi zorlaştırır.
✅ Uygunluk:
function process(items) {
for (const item of items) {
if (!item) {
console.error('Invalid item detected');
return false;
}
}
return true;
}Bunun önemi: Yapılandırılmış döngüler ve erken dönüşler, mantığı netleştirir, hata işlemeyi açık hale getirir ve bakım işlerini kolaylaştırır.
Sonuç
Yapılandırılmış, okunabilir ve güvenli bir kod elde etmek için goto kullanmaktan kaçının. Öngörülebilir kontrol akışı sağlamak için döngüler, işlevler ve erken dönüşler kullanın. Bu, bakım maliyetini azaltır, fark edilmeyen hataları önler ve güvenli yürütme yollarını garanti eder.

