Tak, możesz [ponownie] pisać programy bez instrukcji break (lub wraca ze środka pętli, które robią to samo). Ale może być konieczne wprowadzenie dodatkowych zmiennych i / lub powielanie kodu, które zwykle utrudniają zrozumienie programu. Z tego powodu Pascal (język programowania) był bardzo zły, szczególnie dla początkujących programistów. Twój szef zasadniczo chce, żebyś programował w strukturach kontrolnych Pascala. Gdyby Linus Torvalds był w twoich butach, prawdopodobnie pokazałby szefowi środkowy palec!
Jest wynik informatyki zwany hierarchią struktur kontrolnych Kosaraju, która sięga 1973 roku i jest wspomniana w (bardziej) znanym artykule Knutha na temat gotos z 1974 roku. ). S. Rao Kosaraju udowodnił w 1973 r., Że nie jest możliwe przepisanie wszystkich programów, które mają wielopoziomowe podziały głębokości n na programy o głębokości przerwania mniejszej niż n bez wprowadzenia dodatkowych zmiennych. Powiedzmy jednak, że jest to wynik czysto teoretyczny. (Po prostu dodaj kilka dodatkowych zmiennych ?! Z pewnością możesz to zrobić, aby zadowolić swojego szefa ...)
O wiele ważniejsze z punktu widzenia inżynierii oprogramowania jest najnowszy artykuł Erica S. Robertsa z 1995 r. Zatytułowany Loop Exits and Structured Programming: Reopening the Debate ( http://cs.stanford.edu/people/eroberts/papers/SIGCSE- 1995 / LoopExits.pdf ). Roberts podsumowuje kilka badań empirycznych przeprowadzonych przez innych przed nim. Na przykład, gdy grupa studentów typu CS101 została poproszona o napisanie kodu dla funkcji realizującej wyszukiwanie sekwencyjne w tablicy, autor badania powiedział o tych studentach, którzy użyli break / return / goto do wyjścia z sekwencyjna pętla wyszukiwania, gdy element został znaleziony:
Nie znalazłem jeszcze ani jednej osoby, która spróbowała użyć programu przy użyciu [tego stylu], która stworzyła nieprawidłowe rozwiązanie.
Roberts mówi również, że:
Uczniowie, którzy próbowali rozwiązać problem bez wyraźnego powrotu z pętli for, radzili sobie znacznie gorzej: tylko siedmiu z 42 uczniów próbujących zastosować tę strategię udało się wypracować prawidłowe rozwiązania. Liczba ta stanowi wskaźnik sukcesu mniejszy niż 20%.
Tak, możesz być bardziej doświadczony niż studenci CS101, ale bez użycia instrukcji break (lub równoważnie return / goto ze środka pętli), w końcu napiszesz kod, który przy nominalnej ładnej strukturze jest wystarczająco włochaty pod względem dodatkowej logiki zmienne i powielanie kodu, że ktoś, prawdopodobnie ty, wprowadzi do niego błędy logiczne, starając się podążać za stylem twojego szefa.
Powiem też tutaj, że artykuł Roberta jest o wiele bardziej dostępny dla przeciętnego programisty, więc lepiej najpierw przeczytać niż Knutha. Jest także krótszy i obejmuje węższy temat. Prawdopodobnie mógłbyś nawet polecić to swojemu szefowi, nawet jeśli jest to kierownictwo, a nie typ CS.