Goto deyimi neden önerilmez?


#1

Programlamada goto diye bir deyim vardır. Ben bu deyimi bat (windows cmd) kodlarında kullanmıştım. @ismailarilik’in dediğine göre C dilinde varmış ama ortalığı karıştırdığı için önerilmiyormuş. Ben şahsen bir sorun yaşamamıştım ama önerilmediğini duyunca nedenini merak ettim.


#2

öyle programlama yapmadım hiç ama şu sorun oluşabilir.goto ile nokta yönlendirmesi yaparsın.şu olunca buraya git.b noktasına gitmek için a işleminin yapılıyor olması lazım gibi.a işlemi yapılmazsa haliyle b noktasına gidemeeyecek.yazdığın tüm kodları goto ile kullanırsan sürekli istediğin gibi çalışması gerekir.ufak bir hatada karışır.


#3

:thinking: mantıklı…
Peki başka ne olabilir?


#4

goto yapısal programlamaya aykırıdır. Yani programın akışını doğal olmayan bir şekilde değiştirir. Yapısal programlamada üç çeşit akış vardır: İleri gitme, koşullar ve döngüler. İleri gitme akışı bildiğiniz bir ifadeden sonra diğerinin çalıştırılmasıdır. Koşullar bildiğiniz if'lerdir. Döngüler ise while ve for'lardır. goto kullanmadığınızda bunlar düz bir çizgide ilerler ve sonra program sonlanır. Ancak goto kullanırsanız program bir yerden bir yere istediği gibi zıplayabilir. Programın akışı belirsizleşir. Örneğin, goto ile bir UML diyagramı çizmek zordur. goto kullanmadan ise bir UML diyagramı kolayca bir programa çevrilebilir. Küçük programlarda goto ifadesi çok sorun olmaz ancak programlar büyüdükçe hata riskini artırır. Aslında break, continue ve fonksiyon sonunda olmayan return de goto gibidir ancak sadece belirli yerlerde geçerli oldukları ve genelde kullanışlı oldukları için kullanılırlar.

goto'nun neden kullanılmaması gerektiğini daha iyi anlamak için internette arama yapmanızı öneririm. Ben hiç kullanmadım, ihtiyaç da duymadım. Kullanmayın, kullandırtmayın…


#5

Zaten goto Assembly’den kalmış gereksiz bir kavramdır. Assembly’de illa ki bunu kullanmak gerekir ancak C ve daha üst seviye dillerde yapısal programlama ilkeleri ile gayet de goto'suz bir program yapılabilir. Biraz daha uzun olabilir ancak daha basit, okunabilir ve hatasız olur.