function compareArrays(arrayA, arrayB) {
if (arrayA.length != arrayB.length) return true;
for (i = 0; i < arrayA.length; i++)
if (arrayB.indexOf(arrayA[i]) == -1) {
return true;
}
}
for (i = 0; i < arrayB.length; i++) {
if (arrayA.indexOf(arrayB[i]) == -1) {
return true;
}
}
return false;
}
Это является безусловно лучшим объяснением, которое я считал до сих пор.
В его самом простом это - просто механизм, который восстанавливает Ваш проект каждый раз, когда регистрация превращена в некоторую систему управления версиями (CVS и т.д.). Это может быть расширено, хотя включать запускающие тесты, полностью до генерации образа CD, монтирования его в VMs, установка продукта и запущение полных тестов на нем.
Это имеет простое преимущество выделения, когда изменения кода повреждают систему как можно раньше. Мало того, что это обнаруживает перерывы в коде, это выделяется, кто вызвал повреждение. Этот психологический эффект является очень эффективным при ободрительном хорошем тестировании до регистрации!
+1 для ссылки на страницу Fowler.
Лично, я просто нашел "хорошим" знать каждый раз, когда что-то не скомпилировало, потому что у нас была плохая практика наличия единственной сборки (да, мы разработали на производственной сборке; мы были удивительными). Мы не получили фазу комплексного испытания, прежде чем я уехал.
Через некоторое время, это действительно, однако, уменьшало количество значительных изменений кодирования (по сравнению с "регистрацией и молилось, чтобы мои изменения не конфликтовали", который был необузданным). В конечном счете большинство разработчиков начало вносить небольшие изменения часто только для получения подтверждения от значка панели задач CC.Net.
В целом, я нашел очень утешительным знать, что мы могли сразу отослать сборку, если бы мы имели к. У нас было всего несколько интегрированных испытаний с помощью дыма, я думаю, что уровень напряжения был бы существенно ниже.
Это - практика обеспечения, что все аспекты Вашего процесса разработки программного обеспечения выстроены в линию для разрешения ежедневного создания рабочей версии продукта. Это известно прежде всего как часть Экстремального программирования.
Это включает вещи так же вдалеке как автоматизация сборки, автоматизированное тестирование, ежедневные регистрации, использование репозитория исходного кода, и т.д. Но конечная цель должна помочь всему проекту, выполненному согласно базовым Гибким Принципам так, чтобы Вы поставляли рано и часто. Это, в свою очередь, помогает Вам усилить обратную связь от своих пользователей и т.д.