Когда целесообразно использовать перерыв? - PullRequest
2 голосов
/ 19 июля 2011

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

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

Ответы [ 6 ]

3 голосов
/ 19 июля 2011

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

2 голосов
/ 19 июля 2011

Иногда профессора не правы.

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

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

1 голос
/ 19 июля 2011

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

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

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

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

1 голос
/ 19 июля 2011

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

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

1 голос
/ 19 июля 2011

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

0 голосов
/ 19 июля 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
}
...