Daha yüksek seviye kontrol akış yapıları, problem alanındaki kavramlara karşılık gelme eğilimindedir. Bir if / else, bazı koşullara dayanan bir karardır. Bir döngü tekrar tekrar bazı eylem gerçekleştirmek için diyor. Bir mola bile olsa, "bunu tekrar tekrar yapıyorduk ama şimdi durmamız gerekiyor" diyor.
Öte yandan, bir goto ifadesi, sorun alanındaki değil, çalışan programdaki bir konsepte karşılık gelme eğilimindedir. Programda belirtilen noktada yürütmeye devam edeceğini söylüyor . Kodu okuyan birinin , problem alanına göre ne anlama geldiğini çıkarması gerekir.
Tabii ki tüm üst düzey yapılar, gotos ve basit koşullu dallar olarak tanımlanabilir. Bu, sadece kılık değiştirdikleri anlamına gelmez. Onları sınırlı gotos olarak düşünün - ve bu onları faydalı kılan kısıtlamalardır. Bir break ifadesi, kapatma döngüsünün sonuna bir atlama olarak uygulanır, ancak döngü üzerinde bir bütün olarak çalışması daha iyi düşünülür.
Diğer her şey eşittir, yapısı problem alanının yapısını yansıtan kodun okunması ve bakımı daha kolay olma eğilimindedir.
Bir goto ifadesinin kesinlikle gerekli olduğu durumlar yoktur ( bu etkiye yönelik bir teorem vardır), fakat bunun en kötü çözüm olabileceği durumlar vardır. Bu durumlar, dilin hangi seviyeyi desteklediğine bağlı olarak dilden dile değişir.
Örneğin C'de, bir goto'nun uygun olduğu üç temel senaryo olduğuna inanıyorum.
- Yuvalanmış bir döngüden kopma. Dilin etiketli bir break ifadesi olsaydı bu gereksiz olurdu.
- Bir hata veya beklenmeyen bir olay durumunda bir kod genişliğinden (tipik olarak bir işlev gövdesi) kurtulma. Dil istisnalar olsaydı, bu gereksiz olurdu.
- Açık bir sonlu durumlu makinenin uygulanması. Bu durumda (ve sanırım, sadece bu durumda), bir goto doğrudan mevcut durumdaki hangi kod bloğunun yürütüldüğü mevcut durumun temsil edildiği bir durumdan belirli bir duruma geçerek problem alanındaki bir konsepte tekabül eder .
Öte yandan, açık bir sonlu durumlu makine, bir döngü içindeki bir switch ifadesi ile de uygulanabilir. Bunun, her durumun kodda, örneğin hata ayıklama için yararlı olabilecek aynı yerden başlaması avantajı vardır.
Bir goto'nun oldukça modern bir dilde (eğer / başkalarını ve döngüleri destekleyen) ana kullanımı, dilde eksik olan bir kontrol akışı yapısını simüle etmektir.