Источник checkins в частом или нечастом?

Вот оптимизированный пример алгоритма isSubstring. Итерирует только минимально необходимое количество символов.

Например, если длина строки составляет 20 символов, а длина подстроки составляет всего 5 символов, когда мы доберемся до 16-й позиции строки, мы можем предположить, что подстрока не существует в строке (16 + 5 = 21> 20)

function isSubstring(str, sub){
  if(sub.length > str.length) return false;
  for(let i = 0; i < str.length - sub.length + 1; i++){
    if(str[i] !== sub[0]) continue;
    let exists = true;
    for(let j = 1; j < sub.length && exists; j++){
        if(str[i+j] === sub[j]) continue;
        exists = false;
    }
    if(exists) return true;
  }
  return false;
}

//expected true
console.log(isSubstring("hello world", "hello"));
console.log(isSubstring("hello world", "world"));
console.log(isSubstring("hello world", "d"));
console.log(isSubstring("hello world", "o w"));
console.log(isSubstring("hello world", "rl"));
console.log(isSubstring("hello world", ""));

//expected false
console.log(isSubstring("hello world", "hello world 1"));
console.log(isSubstring("hello world", "helloo"));

6
задан 2 revs 4 February 2009 в 17:45
поделиться

12 ответов

Проверьте, что ins должен часто делаться.

Регистрация должна быть

  • Атомарный. Содержите все необходимые изменения, но не больше. Который также означает это
  • пробельные изменения идут на свою собственную фиксацию.
  • измените только одну функциональность. Это могло бы изменить несколько функций, но это не должно изменять функциональность несколькими способами и / или места.
  • прокомментированный. Регистрация комментария должна позволить Вам быстро найти фиксацию, даже если этому 2 года, и Вы не работаете над тем конкретным источником (или даже проект) больше.
  • работа. Только фиксация, если код на самом деле создает и делает то, что это утверждает, что сделало.

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

10
ответ дан 8 December 2019 в 02:24
поделиться

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

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

2
ответ дан 8 December 2019 в 02:24
поделиться

Регистрация рано и часто, точно так же, как голосование.

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

Способ согласовать эти две вещи состоит в том, чтобы создавать ответвление для Вашей рабочей области, регистрацию часто на ответвлении, и объединяться назад, когда Вы сделали и протестировали изменения. Раздражения из-за создания больших слияний по многим изменениям поощрят Вас разламывать их на небольшие шаги. Который является Хорошей Вещью.

7
ответ дан 8 December 2019 в 02:24
поделиться

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

2
ответ дан 8 December 2019 в 02:24
поделиться

Я могу рекомендовать следующие инструкции:

  • Каждая регистрация должна быть "атомарной", означая, что Вы только изменяете одну часть системы. Одна большая регистрация этого изменяется, много вещей не рекомендуется, потому что затем становится трудным вернуться всего одно изменение.
  • Не регистрируйтесь в коде, пока он не был полностью протестирован.
  • Действительно зарегистрируйтесь в коде, как только это готово. Это хорошо для целей резервирования и потому что Ваша рабочая копия выходит из синхронизации с последними изменениями в управлении исходным кодом дольше, это находится там.
  • Регистрируетесь ли Вы часто или нечасто, дисковое пространство должно быть примерно тем же.
  • Для searchability просто удостоверьтесь, что Вашей регистрации присоединили комментарий к нему.
9
ответ дан 8 December 2019 в 02:24
поделиться

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

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

Это - действительно вопрос того, чем Вы довольны. Единственная официальная политика: не повреждайте сборку и не повреждайте рабочие функции. Если Вам, вероятно, придется передать Вашу середину реки работы, регистрируйтесь чаще. Это работает на нас.

2
ответ дан 8 December 2019 в 02:24
поделиться

Вопрос: какой VCS Вы используете? Ваш комментарий, что Ваш босс жаловался при отъезде кода проверенным во время отпуска, кажется нечетным. У меня всегда есть код проверенная, использующая Подверсия, и никто не заботится.

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

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

1
ответ дан 8 December 2019 в 02:24
поделиться

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

  • В гибкой среде регулярные регистрации понижают риск повреждения сборки или обнаружения с конфликтами слияния с другими программистами;

  • Более частые регистрации подразумевают больше детализированных регистраций, что означает, что Вы собираете намного больше информации---, это полезно для получения статистики на здоровье проекта и для выслеживания ошибок;

  • Детализированные регистрации означают, что комментарии регистрации более фокусируются, и существует меньше шанса изменений под описанием, которые были внесены;

  • Детализированные регистрации гарантируют, чтобы межверсия diffs стала легче перейти.

Вашим конкретным вопросом, хотя о критериях регистрации---это, конечно, является вопрос стиля. Как показывает опыт, я стремлюсь к разламыванию задачи на подзадачи 1 - 3 часов, каждая из которых имеет определенную цель---регистрация, после того как Вы закончили подзадачу. "Законченный" субъективно, но в моей книге это означает работать т.е. вся передача модульных тестов, и Ваше покрытие кода на допустимом уровне (приемлемый для Вас, который является).

2
ответ дан 8 December 2019 в 02:24
поделиться

Я часто регистрируюсь.

Две вещи, которые управление исходным кодом дает Вам, что Вы проигрываете от не регистрации часто:

  • упрощение сотрудничества
  • отслеживание истории изменений со временем

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

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

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

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

2
ответ дан 8 December 2019 в 02:24
поделиться

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

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

0
ответ дан 8 December 2019 в 02:24
поделиться

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

1
ответ дан 8 December 2019 в 02:24
поделиться

Это - процедура, которую мы используем:

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

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

0
ответ дан 8 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

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