Делать небольшие изменения, проверять их, затем «полоскать и повторять» - вредная привычка?

54

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

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

  1. Изменить ресурсы этого пользовательского элемента управления
  2. Изменить размер другого
  3. Добавьте немного HTML и кодирование на другой пользовательский элемент управления

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

Или я должен выполнить их все сразу, а затем проверить их вместе?

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

Математика
источник
3
@gnat ваш самый популярный ответ также основан на мнениях - programmers.stackexchange.com/questions/154733/… Каждый ответ, который я прочитал, дает собственное мнение, какие-либо комментарии?
Математика
2
Это не так. как насчет вашего второго по популярности ответа - programmers.stackexchange.com/questions/159964/… - разве это тоже не основано на мнении?
Математика
7
Этот подход похож на разработку через тестирование, когда вы создаете тест, вносите изменения, необходимые для его прохождения, а затем запускаете тесты. Когда вы повторите это для второго теста, ваш второй тестовый запуск будет включать первый; вам придется повторять тестирование снова и снова, чтобы доказать, что оно все еще работает, но оно автоматизировано.
Кевин Хогг
5
Я бы сказал, что противоположная привычка - вносить кучу изменений и только потом проверять ее - это плохая привычка.
Крис Б. Беренс

Ответы:

130
  • Это хорошая практика.
  • Вы следуете научному методу.
  • Если вы измените несколько вещей перед любым тестированием, то тестирование каждого из них будет более трудным и, возможно, ненадежным, так как предварительные условия будет сложнее подготовить, и различные изменения могут взаимодействовать друг с другом способами, которые вы не предвидели.
  • Когда вы чувствуете, что «теряете» сейчас, вы позже вернетесь на этапы интреграции, тестирования и сопровождения.
  • Путь
Тулаинс Кордова
источник
9
AFAIK, для программирования пользовательского интерфейса, это не только хорошая практика, это единственная приемлемая практика. Вот почему компании-разработчики создали так много What you see is what you getинструментов для разработчиков, работающих с HTML, CSS, Widget и т. Д.
InformedA
38

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

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

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

FrustratedWithFormsDesigner
источник
18

Ваш вопрос состоит из двух частей:

  1. я должен выполнить их все один раз и затем проверить их вместе?

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

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

    Ответ ясен:

    Нет, вносить изменения только один за другим - одна задача одна фиксация .

  2. но у меня появилась плохая привычка делать небольшие небольшие изменения, а затем проверять их снова и снова в веб-браузере, это хорошая практика?

    Это хорошая практика для тестирования коды / UI любого , но это нонсенс , чтобы делать это снова и снова в браузере. Есть инструменты, которые делают это автоматически для вас ( Selenium, PhantomJS / Casper, ZombieJS )

    Ответ для этого случая:

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

Томас Джанк
источник
2
+1, но я не согласен с использованием автоматизации. Когда я разрабатываю новую функцию, я тестирую как вручную, так и с помощью автоматизации. Ручные тесты позволяют мне быть уверенным, что все ведет себя так, как я ожидаю. Можно неправильно написать автоматизированный тест, посмотреть, как он прошел, и подумать, что все хорошо, а затем протестировать вручную и увидеть, что что-то не так.
Кевин - Восстановить Монику
Одна задача, в которой каждый коммит уверен, может сделать журнал VCS непонятным беспорядком для различных определений «одной задачи»
whatsisname
Зависит от того, насколько детально вы задаете задачу;) или, если хотите, один «тикет», один коммит / ветвь. Использование git делает это легко
Томас Джанк,
1
Чтобы расширить то, что сказал Кевин, я считаю, что если вы добавляете новую функцию, которая является внешним интерфейсом, вам всегда нужно проверять ее вручную (мне еще предстоит найти эквивалент TTD для работы с внешним интерфейсом), но вам также нужна ваша автоматизация пакет, чтобы убедиться, что вы не сломали существующие функции.
Scragar
@ скрагар да. Автоматизация для регрессионного тестирования.
Томас Джанк,
6

Для любой привычки разработчика есть 2 основных вопроса:

  1. Как это влияет на качество кода, который вы делаете?
  2. Как это влияет на вашу производительность?

Если ответ на оба вопроса: «Это делает его лучше», избавьтесь от привычки, научите ее другим!
Если ответ на один «лучше», а другой «хуже» - это стиль, и вы должны осознавать это. Это не всегда применимо, и вам, возможно, придется приложить усилия, чтобы подавлять его время от времени.
Если ответ на оба вопроса «Негативный» - у вас серьезная проблема.

Конечно, в первых двух случаях вы также должны подумать: «Может ли положительный эффект быть каким-то образом автоматизирован или институционализирован?». Может быть, лучше написать тест, чем каждый раз пробовать разные браузеры? (Обратите внимание, я знаю, что проверить правильность макета в веб-разработке не так просто, я не говорю, что это всегда возможно или стоит времени).

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

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

Ordous
источник
4

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

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

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

(Возможно, есть и другие способы.)

Rufflewind
источник
+1 для того, чтобы сделать это в браузере напрямую. Я часто делаю CSS-твики прямо в браузере как отбросивший прототип реальной работы, которую я собираюсь сделать.
RubberDuck
0

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

FreeAsInBeer
источник