Что Вы сделали бы, когда Вы собираетесь добавить некоторые новые опции к большому (и грязный) кодовая база, которая имеет фактически *НЕ* код поблочного тестирования?

Я думаю, что самым простым способом было бы поместить их в контейнер display: flex и установить на него align-items: center, как объяснено здесь .

9
задан S.Lott 7 October 2008 в 20:55
поделиться

14 ответов

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

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

14
ответ дан 4 December 2019 в 05:54
поделиться

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

1
ответ дан 4 December 2019 в 05:54
поделиться

Fowler также предлагает, чтобы Вы никогда не осуществляли рефакторинг без безопасности тестов. Но, как Вы получаете те тесты на месте? И, как далеко Вы идете?

Ранее рекомендуемая книга (Работающий Эффективно с Унаследованным кодом Michael Feathers) является категорической работой над предметом.

Нужно более быстрое чтение? Смотрите на более раннюю статью Michael (PDF) того же имени.

2
ответ дан 4 December 2019 в 05:54
поделиться

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

При добавлении нового кода и надежде это Просто Работ плохо.

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

1
ответ дан 4 December 2019 в 05:54
поделиться

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

2
ответ дан 4 December 2019 в 05:54
поделиться

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

3
ответ дан 4 December 2019 в 05:54
поделиться

Посмотрите Рэнды в Теории Струйки Отдыха для подобной проблемы, с которой он встретился с огромными числами ошибок. Его рекомендация:

Мой совет: ЗАПУСТИТЬ

9
ответ дан 4 December 2019 в 05:54
поделиться

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

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

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

Я только дифференцируюсь между статическими и динамическими языками, потому что настолько легче сделать рефакторинги на статически типизированном языке - они имеют тенденцию быть намного более предсказуемыми. Я не ненавижу Ruby или что-либо - я провел год на ROR также. Я просто думаю, что им нужны разные подходы.

2
ответ дан 4 December 2019 в 05:54
поделиться

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

Модульные тесты являются большой услугой программисту, но они не единственный вид тестирования там.

5
ответ дан 4 December 2019 в 05:54
поделиться

Добавьте модульные тесты к коду, который Вы собираетесь Осуществить рефакторинг.

10
ответ дан 4 December 2019 в 05:54
поделиться

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

11
ответ дан 4 December 2019 в 05:54
поделиться

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

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

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

  2. Сложность изменений сделана. Если Вы вносите очень сложные изменения в кодовую базу (типичный случай в "грязной" кодовой базе, b/c такой источник обычно сильно связывается и incohesive), некоторый рефакторинг, более вероятно, будет требоваться. Такие изменения не являются результатом того, чтобы быть ниндзя кода, также, поскольку они необходимы, чтобы Вы просто обосновали об изменениях, что делаете. Это также связано с "вредностью" кодовой базы, которую Вы изменяете. Практически невозможно создать даже самые простые модульные тесты на сильно связанное, incohesive путаница. (Я говорю на основе опыта. Один из проектов, которые я почти застрял, поддержав, был о 20k строках долго, исключая сгенерированный код, в двенадцати файлах. Целое приложение было единым классом под названием "Form1". Это - пример dev злоупотребление частичной функцией класса.)

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

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

Базовый вопрос, на который необходимо ответить при рассмотрении какого-либо вида инвестиций времени как это, "Где значение лежит?" Затем необходимо преследовать то значение.

3
ответ дан 4 December 2019 в 05:54
поделиться

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

0
ответ дан 4 December 2019 в 05:54
поделиться

затроньте как можно меньше. И молитесь.

0
ответ дан 4 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

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