Evet, break ifadesi olmadan programları yeniden yazabilirsiniz (veya aynı şeyi yapan döngülerin ortasından döndürür). Ancak, her ikisinin de programı anlamayı zorlaştırdığı ek değişkenler ve / veya kod çoğaltması yapmanız gerekebilir. Pascal (programlama dili) özellikle acemi programcılar için bu nedenle çok kötüydü. Patronun temel olarak Pascal'ın kontrol yapılarında program yapmanı istiyor. Linus Torvalds ayakkabının içinde olsaydı, muhtemelen patronuna orta parmağını gösterirdi!
Kosaraju’nun 1973’e dayanan ve 1974’ten bu yana Knuth’un (daha fazla) ünlü makalesinde değinilen kontrol yapıları hiyerarşisi olarak adlandırılan bir bilgisayar bilimi sonucu var. .) ne S. Rao Kosaraju 1973 yılında kanıtladı o derinlik çok düzeyli sonları olan tüm programları yeniden yazmak mümkün değildir olmasıdır n daha mola derinliği az olan programlara n ekstra değişkenleri tanıtan olmadan. Diyelim ki bu sadece teorik bir sonuç. (Sadece bir kaç ekstra değişken ekleyelim mi ?! Kesinlikle patronunuzu memnun etmek için bunu yapabilirsiniz ...)
Yazılım mühendisliği perspektifinden çok daha önemli olan, Eric S. Roberts'ın Döngü Çıkışları ve Yapısal Programlama: Tartışmayı Yeniden Açma başlıklı 1995 tarihli makalesidir ( http://cs.stanford.edu/people/eroberts/papers/SIGCSE- 1995 / LoopExits.pdf ). Roberts ondan önce başkaları tarafından yürütülen deneysel çalışmaları özetlemektedir. Örneğin, CS101 tipi bir grup öğrenciden bir dizide sıralı bir arama uygulayan bir fonksiyon için kod yazması istendiğinde, çalışmanın yazarı, bir ayrılma / geri dönüş / goto kullanan kişi hakkında eleman bulunduğunda sıralı arama döngüsü:
Henüz yanlış bir çözüm üreten [bu stili] kullanarak bir programı deneyen tek bir kişi bulamadım.
Roberts ayrıca şunu söylüyor:
Sorunu açık bir şekilde kullanmadan çözmeye çalışan öğrenciler, for döngüsünden geri dönüşü çok daha az başardı: Bu stratejiyi deneyen 42 öğrenciden sadece 7'si doğru çözümler üretmeyi başardı. Bu rakam% 20'den az bir başarı oranını temsil ediyor.
Evet, CS101 öğrencilerinden daha deneyimli olabilirsiniz, ancak break deyimini kullanmadan (veya döngülerin ortasından eşit olarak geri döndüğünüzde), sonunda mantıklı bir şekilde yapılandırılmış olarak ekstra mantık açısından yeterince kıllı olan kod yazacaksınız. Patronunuzun kodlama stilini izlemeye çalışırken muhtemelen kendiniz birinin kullandığı değişkenler ve kod çoğaltması buna mantık hataları koyacaktır.
Burada Roberts’ın kağıdının ortalama bir programlayıcı için çok daha erişilebilir olduğunu söyleyeceğim, bu yüzden Knuth’lardan daha iyi bir ilk okuma. Aynı zamanda daha kısa ve daha dar bir konuyu kapsıyor. Muhtemelen CS tipinden ziyade yönetim olsa bile bunu patronunuza önerebilirsiniz.