Когда уместно использовать перерыв?

Мои вопросы в основном все в заголовке. Я не имею в виду настоящее приложение, я просто пытаюсь убедиться, что использую общепринятые хорошие методы кодирования, и я помню, как мой профессор CS сказал, что обычно избегают перерывов, когда это возможно, но он никогда не говорил нам почему. < / em>

Я бы сам спросил его, но этим летом его нет в офисе.


person Joshua    schedule 19.07.2011    source источник
comment
Что именно вы имеете в виду под перерывами?   -  person dknaack    schedule 19.07.2011
comment
Вашего профессора нет в офисе на лето .... на break?   -  person Yuck    schedule 19.07.2011
comment
Спасибо всем за помощь!   -  person Joshua    schedule 19.07.2011
comment
Вы также можете проверить этот вопрос: stackoverflow.com/q/18188123/2182237   -  person Don    schedule 13.08.2013


Ответы (6)


Это богословский вопрос. Люди, которые выступают против использования break (или continue, если на то пошло), говорят, что это затрудняет отслеживание потока управления программой и, таким образом, делает программу менее читаемой. Но более простой способ сделать код читаемым - это просто сделать более короткие функции, использовать осмысленные имена переменных, соответствующим образом прокомментировать и т. Д.

person Scott C Wilson    schedule 19.07.2011

Иногда профессора ошибаются.

Он может возражать против выхода из петли прямо в ее середине. Это похоже на использование оператора return в середине функции ... некоторые считают это богохульством.

Следует использовать то, что является самым простым и дает наиболее легко обслуживаемый код.

person Steve Wellens    schedule 19.07.2011

Вообще говоря, вы будете использовать «break», чтобы выйти из циклов при выполнении определенного условия (например, когда вы нашли то, что ищете, и т. Д.); Я не считаю это «злом», например, печально известное заявление GOTO, но разумные люди будут отличаться.

person Tomas Kohl    schedule 19.07.2011

То, что Дейкстра сказал, было вредно для операторов goto - http://drdobbs.com/blogs/cpp/228700940

и https://softwareengineering.stackexchange.com/questions/58237/are-break-and-continue-bad-programming-practices

person darlinton    schedule 19.07.2011
comment
Игра в адвоката дьявола: противники break утверждают, что это плохо замаскированный goto. - person ; 19.07.2011
comment
Это именно то, что говорит @darlington. Некоторые считают, что break вреден по той же причине, что и goto. - person Scott C Wilson; 19.07.2011

Ваш профессор говорил, что «следует избегать перерывов», потому что они похожи на табуированное заявление goto. Однако сказать «по возможности следует избегать перерывов» - неправильно.

Перерыв существует для удобства чтения. Вы можете делать все без перерыва, но это не значит, что вы должны это делать. Иногда имеет смысл сделать заявление вроде «В этом состоянии выйдите из этого цикла». или «В этом состоянии вернуться из этой функции».

Плохая идея использовать break для выполнения программы во вложенных циклах for таким образом, чтобы это могло запутать случайного читателя.

Простое практическое правило: делает ли использование break здесь (вместо дополнительных if / thens, другого логического значения и т. Д.) Это легче или труднее для понимания? Это так просто.

person Jeremy    schedule 19.07.2011

Попросите своего профессора без перерыва попробовать написать switch оператор на любом языке C-стиля. Я уверен, что это можно сделать, но полученный код не будет более читабельным.

switch (someExpression) {
    case enumVar.CaseA:
        // do things here, but don't you dare break!
    case enumVar.CaseB:
        // do other things - possibly unrelated or contradictory to CaseA

    // ... and so on
}
person Yuck    schedule 19.07.2011