2010-02-23 4 views

ответ

0

Позвольте мне ответить на пару вопросов:

  • Почему она не должна быть хорошей практикой?

  • Уменьшает ли он читаемость вашего кода?

  • Это замедляет ваши циклы?

1

При использовании света это нормально, но при интенсивном использовании он превращает ваш код в спагетти. break и continue в основном просто ограниченный goto и как таковой, используйте экономно.

+1

За исключением того факта, что с goto вы никогда не знаете, прыгает ли он назад или вперед. С перерывом и продолжением вы знаете, где он прыгает – jab

1

Это абсолютно то, что они оба являются правильными конструкциями программирования.

Что представляет собой не последнюю идею, это ново представленный GOTO. (Пожалуйста, скажите мне, что это была шутка от первого дурака, о которой я не видел!)

+0

PHP имеет 'goto' !!? – Earlz

+5

Когда на странице php.net есть комикс XKCD, вам действительно нужно задаться вопросом – Erik

+0

Да. Я имею в виду, что вам нужно, когда на языке программирования уже есть образ непрофессионализма? Вы добавляете * goto *. Sheesh. –

0

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

4
do { 
if (condition1) 
    break; 
some code; 
some code; 
if (condition2) 
    break; 
some code; 
some code; 
if (condition3) 
    break; 
some code; 
some code; 
} while (false); 

против

if (!condition1) { 
    some code; 
    some code; 
    if (!condition2) { 
     some code; 
     some code; 
     if (!condition3) { 
     some code; 
     some code; 
     } 
} 

Некоторые считают, первая версия в abhomination и трудно читать и любить вторую версию. Некоторые считают, что первая версия более чистая и удобная для чтения. По мере того, как число условий умножается, я склоняюсь к тому, чтобы найти первую версию проще, поскольку вторая имеет тенденцию становиться все труднее следовать уровню гнездования. Также, если if (condition) break; попадает во что-то лишь немного более сложное, как if (condition) {some code; break}, шаблон do {if .. break; if .. break..;} while(false) становится еще более понятным по сравнению с эквивалентным вложенным ifs.

0

Для обсуждения перерыва и продолжения в PHP (и в общем цикле) взгляните на Advanced loops - у вас создается впечатление, что автор может просто проглотить прорыв и продолжить, но не сломать n и продолжить n. :-)

0

В программировании на PHP более 5 лет мне никогда не приходилось использовать разрыв вне операторов switch.

Continue иногда используется для пропуска первого или последнего элемента в итерациях, но мне это не очень нравится.

Почему они повторно вводили GOTO?это позор

Чтобы ответить на вопрос, в

if (!empty($var)) 
    break; 

Почему бы не использовать возврат (если в контексте метода)

if (!empty($var)) 
    return false; 

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

1

Совершенно правильно использовать break или continue, если это помогает сделать код более легким для чтения и понимания. Я лично использую их очень редко, и только когда я не могу легко использовать другую структуру.

В случае большинства while заявлений, это легче достичь того же результата, как break или continue, используя логическую переменную как условие цикла, в первую очередь, а затем изменить его значение внутри цикла.

С другой стороны, лучше всего использовать случай для break, на мой взгляд, заключается в экономии ресурсов, если вы переборе массива или нечто подобное с for или foreach блока и заинтересованы только в элементах обработки до некоторых пункт достигнут. Используя break после достижения этого элемента, можно сэкономить на мощности обработки, вырвавшись из цикла, не перебирая остальные элементы. Это делает код более эффективным, не делая его менее разборчивым.

И, конечно, практически невозможно использовать операторы switch без break.

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

Смежные вопросы