Подтвердить что ты не робот

Обзор кода или проверка часто?

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

Но как насчет мест с строго обязательным обязательным пересмотром кода? Просить коллегу о пересмотре каждые 30 минут - это убийца производительности.

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

4b9b3361

Ответ 1

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

Но изменить свою стратегию разветвления - не что иное. Хороший вопрос...

Ответ 2

Пытаясь суммировать ответы, можно:

  • используйте соответствующую на любом SVC:

    • личная ветка
    • часто проверяйте
    • просмотреть все изменения
    • объединить все просмотренный код обратно в магистраль (см. этот пример)

    профи: нейтральный SVC

    мозолей: слияние может быть болезненным в некоторых реализациях SVC (хороший обзор мнение Линуса Торвальда) личная ветка должна быть синхронизирована с изменениями внешней линии

    • используйте специальные методы SVC:
    • распределенный SVC

      • создать локальную копию "ветвь разработчика"
      • часто проверять локальное репо
      • открыть для публики (для просмотра) полнофункциональный набор инструментов.
      • слияние рассмотренных изменений в удаленном репозитории

      профи: преимущество SVC даже в автономном режиме, хорошо масштабируется.

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

    • централизованный SVC с соответствующей функцией "label" см. этот обсуждение, и этот обзор - может потребоваться некоторое разъяснение

Кстати, разве мы не должны постоянно делать агрегированный ответ? Тпй.

Ответ 3

Как насчет пары программ? Тогда теория такова, что не потребуется экспертная оценка. Пара-программирование - это экспертный обзор

Ответ 4

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

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

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

Ответ 5

Это вообще не код или код в trunk без проверки? Я думаю, что использование ветвления (надеюсь, вы not с помощью VSS!), Возможно, сработает: т.е. Только изменения сундуков нуждаются в экспертном обзоре.

Ответ 6

Не вся система управления версиями облегчает это, но я использовал этот процесс при работе над большим проектом:

  • Каждый разработчик получает свой собственный поток.
  • Разработчики доставляют завершенные функции из своего потока в родительский поток интеграции после проверки кода.
  • Разработчики часто обновляют свой поток из потока интеграции.

Использование потоков разработчика означает, что разработчики могут оставаться видимыми и иметь резервные копии своей работы в системе. Относительно легко сотрудничать с кем-то другим - они могут просто проверить ваш поток. Создав новую ветку разработчика для каждой функции/дефекта, вы можете довольно легко изолировать изменения - скажем, вам нужно прекратить работу над новой функцией, чтобы исправить срочную ошибку.

Ответ 7

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

Я использовал svk, чтобы поддерживать локальный репозиторий subversion, который я могу фиксировать часто, а затем нажимать изменения (индивидуально или как одиночный комбинированный commit) в родительский репозиторий.

svk mirror
svk pull
svk push

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

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

git svn clone
git svn fetch
git svn dcommit

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

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

Ответ 8

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

Ответ 9

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

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

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

Ответ 10

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

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

Тем не менее, правило "если оно не было совершено, оно не существует" по-прежнему сохраняется и более распространено: "если оно не передано/не объединено с общей ветвью, оно не существует".

Я согласен с теми, кто говорит, что проверка часто является отличной практикой, и это парное программирование является решением для устранения латентности обзоров кода.

Ответ 11

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

Ответ 12

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

Ответ 13

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

Ответ 14

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

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

Я сделаю все возможное.