Продолжить продуманный вредный? [закрытый]

Ответ на принятый ответ от CMS верен, я только что добавил некоторые функции:

  • обрезка и чистые входные пространства
  • тишины, двоеточия и пробелы
  • имеют день и время по умолчанию

// parse a date time that can contains spaces, dashes, slashes, colons
function parseDate(input) {
    // trimes and remove multiple spaces and split by expected characters
    var parts = input.trim().replace(/ +(?= )/g,'').split(/[\s-\/:]/)
    // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
    return new Date(parts[0], parts[1]-1, parts[2] || 1, parts[3] || 0, parts[4] || 0, parts[5] || 0); // Note: months are 0-based
}

22
задан Community 23 May 2017 в 12:34
поделиться

17 ответов

Я думаю, что должно быть больше использования, продолжаются!

Слишком часто я сталкиваюсь с кодом как:

for (...)
{
   if (!cond1)
   {
      if (!cond2)
      {
          ... highly indented lines ...
      }
   }
}

вместо

for (...)
{
   if (cond1 || cond2)
   {
      continue;
   }

   ...
}

Использование это для создания кода более читаемым!

80
ответ дан Rob Walker 29 November 2019 в 03:18
поделиться

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

, С другой стороны, можно эмулировать continue с break (по крайней мере, в Java).

for (String str : strs) contLp: {
    ...
       break contLp;
    ...
}

(Эта регистрация имела очевидную ошибку в вышеупомянутом коде больше десятилетия. Это не выглядит хорошим для break / continue.)

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

for (char c : cs) {
    final int i;
    if ('0' <= c && c <= '9') {
        i = c - '0';
    } else if ('a' <= c && c <= 'z') {
        i = c - 'a' + 10;
    } else {
        continue;
    }
    ... use i ...
}

Это использование должно быть очень редким.

-1
ответ дан Tom Hawtin - tackline 29 November 2019 в 03:18
поделиться

Я полагаю, что аргумент нижней строки против продолжается, то, что он делает его тяжелее, чтобы ДОКАЗАТЬ, что код корректен. Это, доказывают в математическом смысле. Но это, вероятно, не имеет значения для Вас, потому что ни у кого нет ресурсов для 'доказывания' компьютерной программы, которая значительно сложна.

Вводят инструменты статического анализа. Можно сделать вещи тяжелее на них...

И goto, который походит на кошмар по тем же причинам, но в любом случайном месте в коде.

-1
ответ дан Christopher Elliott 29 November 2019 в 03:18
поделиться

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

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

0
ответ дан stukelly 29 November 2019 в 03:18
поделиться

Я сказал бы да. Мне это просто повреждает 'поток' жидко записанной части кода.

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

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

0
ответ дан Peter Bernier 29 November 2019 в 03:18
поделиться

goto может использоваться в качестве продолжения, но не реверса.

Вы можете "goto" где угодно, таким образом управление расходом течи в сечении разрыва произвольно.

Таким образом продолжаются, совсем не как вредный.

1
ответ дан DevelopingChris 29 November 2019 в 03:18
поделиться

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

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

1
ответ дан Nij 29 November 2019 в 03:18
поделиться

Насколько этот программист заинтересован, Вложенный если/еще рассмотренный вредным.

2
ответ дан too much php 29 November 2019 в 03:18
поделиться
  1. Используя продолжают в начале цикла избегать, чтобы повторение по ненужным элементам не было вредно и могло быть очень полезным, но использование его посреди вложенной IFS, и elses может превратить код цикла в сложный лабиринт, чтобы понять и проверить.

  2. я думаю, что его предотвращение использования является также результатом семантического недоразумения. Люди, кто никогда не видит/пишет, 'продолжают' ключевое слово на своем коде при наблюдении, что код с продолжается, может интерпретировать его как "продолжение естественного потока". Если бы вместо продолжаются, мы имели следующий , например, я думаю, что больше людей ценило бы эту ценную функцию курсора.

2
ответ дан Victor Rodrigues 29 November 2019 в 03:18
поделиться

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

2
ответ дан EBGreen 29 November 2019 в 03:18
поделиться

Я сказал бы: "это зависит".

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

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

Это могло бы быть несколько искусственно созданным случаем, но я обычно стараюсь избегать, продолжают и используют если (но не вложение слишком глубоко как в примере кода Rob).

3
ответ дан blabla999 29 November 2019 в 03:18
поделиться

Мне нравится использовать, продолжаются в начале циклов для обработки простого если условия.

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

действительно ли это - та же причина, что я использовал бы goto? Возможно. Я действительно использую их для удобочитаемости время от времени и остановить вложение кода, но я обычно использую их больше для очистки/обработки ошибок.

5
ответ дан Jack Bolding 29 November 2019 в 03:18
поделиться

Если продолжаются, вызывает проблему с удобочитаемостью, то возможности - Вы, имеют другие проблемы. Например, значительные объемы кода в для цикла. Если бы необходимо писать крупно для циклов, я попытался бы придерживаться использования, продолжаются близко к вершине для цикла. Иначе продолжение проложенного под землей глубоко посреди для цикла может легко быть пропущено.

5
ответ дан Torlack 29 November 2019 в 03:18
поделиться

Можно записать, что хороший код с или без продолжается, и можно записать, что плохой код с или без продолжается.

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

12
ответ дан Patman 29 November 2019 в 03:18
поделиться

Нет вредных ключевых слов. Существует только вредное использование их.

Goto не вреден по сути, ни один не, продолжаются. Они должны использоваться тщательно, это - все.

8
ответ дан Jorge Córdoba 29 November 2019 в 03:18
поделиться

Если Вы выполняете итерации через кого-либо своего рода набора результатов и выполняете операции на упомянутых результатах, для, например, в для каждого, и если один конкретный результат вызвал проблему, его довольно полезное в получении ожидаемой погрешности (через выгоду попытки), вход, это, и идущий дальше к следующему результату через продолжается. Продолжите особенно полезно, imo, для необслуживаемых сервисов, которые делают работы в нечетные часы, и одно исключение не должно влиять на другое x количество записей.

2
ответ дан kd7 29 November 2019 в 03:18
поделиться

continue еще вредны, чем, скажем, break ?

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

24
ответ дан dF. 29 November 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: