Опыт применения TDD у нас в команде
Мы у себя применяем. Pairing и прочие атрибуты. :) Могу сказать точно — удовлетворение от работы гораздо больше, потому что ты запускаешь программу и она работает. Не нужно сидеть в дебаггере и что-то там выяснять. Тесты позволяют свести необходимость в отладке к минимуму. А когда программа падает в дебаггер — это большой стресс. TDD от этого стресса максимально избавляет.
Если кто-то начинает гадать, а сработает ли такой подход или нет — обычно говорим друг-другу: «Напиши тест. :)» И это не рутина, а забава. Игра. Когда тебе не нужно философствовать, а можно взять и попробовать. Самый надежный способ. Потом на основе нескольких «пристрелочных» тестов уже можно принимать архитектурные решения.
И опять же, нас до сих пор охватывает легкий шок и удовольствие, когда мы наконец наколбасив сотню тестов, запускаем приложение — и новая фича работает без сучка без задоринки. Гораздо приятнее, нежели запустить и получить исключение в лоб при непонятных обстоятельствах, не правда ли?
Мы написали часть приложения, а потом решили перевести на Unity. При этом при существовавшей у нас до этого самописной системе кэширования и «доставания» сервисов, можно было сделать быстро и неправильно, а можно было правильно, но без тестов было бы стремно. Я пошел вторым путем. Не потому что у нас был 90%+ code coverage, а потому что я не терплю «соплей» в коде. В результате под конец рабочего дня удостоверившись, что все тесты выполняются, я на глазах у коллеги написав кофиг Unity, запускаю… и мы вместе снова балдеем. :) Мы просто не верим, что после того, как я перелопатил все классы попутно упрощая дизайн, оно по-прежнему работает!!!
Причем читать книги — это конечно интересно, но реальность вносит свои коррективы. Например, я открутил со всех кресел подлокотники. Мешают при парном программировании (на фотках из статей везде кресла с подлокотниками). Один монитор удобно повернуть по-вертикали (с кодом), второй — по горизонтали (вообще нигде такого не видел). Но это нам. :) Основная фишка TDD в том, что она избавляет от страха что-то поломать, поэтому если чувствуешь, что нужно сделать рефакторинг, то ты его делаешь, а не вспоминаешь анекдот про сына и отца-программиста… «система работает? работает. вот ты ее и не трогай.» Я могу «трогать» столько, сколько я посчитаю нужным. Граница — лишь здравый смысл. И никакие тесты не «гири». Это свобода!
P.S. Все диаграммы и схемы у нас принципиально от руки.
Если кто-то начинает гадать, а сработает ли такой подход или нет — обычно говорим друг-другу: «Напиши тест. :)» И это не рутина, а забава. Игра. Когда тебе не нужно философствовать, а можно взять и попробовать. Самый надежный способ. Потом на основе нескольких «пристрелочных» тестов уже можно принимать архитектурные решения.
И опять же, нас до сих пор охватывает легкий шок и удовольствие, когда мы наконец наколбасив сотню тестов, запускаем приложение — и новая фича работает без сучка без задоринки. Гораздо приятнее, нежели запустить и получить исключение в лоб при непонятных обстоятельствах, не правда ли?
Пример
Мы написали часть приложения, а потом решили перевести на Unity. При этом при существовавшей у нас до этого самописной системе кэширования и «доставания» сервисов, можно было сделать быстро и неправильно, а можно было правильно, но без тестов было бы стремно. Я пошел вторым путем. Не потому что у нас был 90%+ code coverage, а потому что я не терплю «соплей» в коде. В результате под конец рабочего дня удостоверившись, что все тесты выполняются, я на глазах у коллеги написав кофиг Unity, запускаю… и мы вместе снова балдеем. :) Мы просто не верим, что после того, как я перелопатил все классы попутно упрощая дизайн, оно по-прежнему работает!!!
Среда
Причем читать книги — это конечно интересно, но реальность вносит свои коррективы. Например, я открутил со всех кресел подлокотники. Мешают при парном программировании (на фотках из статей везде кресла с подлокотниками). Один монитор удобно повернуть по-вертикали (с кодом), второй — по горизонтали (вообще нигде такого не видел). Но это нам. :) Основная фишка TDD в том, что она избавляет от страха что-то поломать, поэтому если чувствуешь, что нужно сделать рефакторинг, то ты его делаешь, а не вспоминаешь анекдот про сына и отца-программиста… «система работает? работает. вот ты ее и не трогай.» Я могу «трогать» столько, сколько я посчитаю нужным. Граница — лишь здравый смысл. И никакие тесты не «гири». Это свобода!
P.S. Все диаграммы и схемы у нас принципиально от руки.



комментарии (111)