Является ли тестовое развитие полезным для стартера?

Развертывание этого вопроса о том, как я научился переходить из описания проблемы в код Два человека упомянули TDD.

Было бы хорошо, если бы стартер попал в TDD (и избежал вредных привычек в будущем?) Или это было бы слишком сложно для сцены, когда бы понимали, что такое язык программирования?

Ответ 1

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

Итак, для новичков, при написании тестов получается, что мыслящий сок идет в правильном направлении, что является контрактным поведением, а не поведением реализации.

Ответ 2

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

Ответ 3

Проверка правил TDD Все

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

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

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

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

Ответ 4

def self.learn_tdd_and_programming_together?
  if you_have_tdd_mentor_sitting_next_to_you?
    "go for it"
  else
    if language.ruby?
      "it possible, there is quite a bit of good stuff out 
      there that could give you a chance of learning programming 
      with TDD from the start. It sort of in the ruby culture"
    elsif language.dot_net?
      "learn TDD after you learn the basics of .NET"  
    end
  end
end

Ответ 5

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

Ответ 6

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

Ответ 7

Мой девиз программирования:

  • Запустить его - программа решает проблему
  • Сделайте все правильно - программа разработана чисто и существует небольшое количество дублирования.
  • Сделать это быстро - оптимизировано (при необходимости)

Test Driven Development обрабатывает первые два.

Я думаю, что новичкам следует научить TDD, чтобы он знал, как делать программы. ИМХО, только тогда могут быть преподаны хорошие методы дизайна.

Ответ 8

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

Ответ 9

Да! Определенно.

Ответ 10

Я думаю, что это плохо для кого-то, просто изучая программирование. Как этот человек узнает, что утверждать?: P TDD предназначен для проектирования, а не для тестирования. Как только человек знает, как программировать, будет неплохо начать изучение подхода TDD.

Ответ 11

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

Ответ 12

Важным преимуществом TDD является определение донности. В простом алгоритмическом программировании, если вы придумаете пару сценариев, в которых легко утверждать правильность, легко перечислить их в unit test и сохранить кодировку до тех пор, пока все они не будут работать.

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

Однако, если вы можете сделать простое утверждение о правильности, и его легко напечатать, то, безусловно, записать его в код.

Вы также можете заметить, что если простая формулировка корректности нелегко описана, вы можете не полностью понять свою проблему.

Удачи...

Ответ 13

Это действительно зависит от вашего определения "стартер". Если "стартер" означает кого-то, у которого нет никакого программного фона, тогда нет, я не думаю, что TDD - очень хороший способ начать. Программисту необходимо изучить основы (избегая бесконечных циклов, распределения памяти и т.д.), Прежде чем беспокоиться о рефакторинге и разработке, основанном на тестах.

Ответ 14

код - это код, является ли это то, что вы пытаетесь выявить, или тест.

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

Что касается TDD для проектирования/реализации контракта/тестирования/тестирования всех этих вещей. Будет ли TDD довести вас до совершенного кода? Нет, опыт и изучение корабля помогут вам созреть ваши подходы к кодированию. Но TDD - очень важный инструмент для каждого разработчика.

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

По-моему, пока люди рассматривают TDD как нечто, что нишевый инструмент или как-то необязательный при написании кода, эти люди, очевидно, не получают значения TDD.