Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Чем плоха концепция TDD? (число прочтений - 5757 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Чем плоха концепция TDD?
Ответ #15 - 13. Мая 2010 :: 20:00
Печать  
Поддержу тему (с небольшим запозданием).

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

Почему я вообще вспомнил TDD?
Да потому что пример уж больно хорош.

Давайте рассмотрим проблему последовательно:
В процессе "рефакторинга":

1. некий функционал потерян
2. тестов на потерянный функционал не существует
3. каких - либо превентивных указаний на то, что данный конкретный функционал будет потерян, нет

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

Почему?
Проблема ли это именно TDD?
Нет.
TDD здесь - это всего лишь конечная миля.

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

Дима задал очень правильный вопрос в своем самом первом посте.
Цитата:
Или может нужно смотреть гораздо шире тестов и пытаться разумом и/или интуицией охватить последствия внесения функции C ?

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

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

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

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


P.S.
Артур, твой код нам здесь попался на глаза совершенно случайно.
У меня нет цели анализировать именно твой код или именно твой стиль разработки.
Да, он не ложится нормально на мой шаблон разработки, мне с ним трудно работать.
Но без него у меня не появились бы вопросы (о совместимости стилей и шаблонов мышления, например), на которые я бы не стал искать ответы.
Мы же не ищем легких путей, не так ли? Подмигивание
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #16 - 14. Мая 2010 :: 05:08
Печать  
kms писал(а) 13. Мая 2010 :: 20:00:
Почему я вообще вспомнил TDD?
Да потому что пример уж больно хорош.
[...]
Проблема ли это именно TDD?
Нет.

Ай, маладца Улыбка
Да, я передергиваю, но уж больно хорошо, согласись Улыбка

kms писал(а) 13. Мая 2010 :: 20:00:
Вообще, мой опыт говорит о том, что логика без TDD дает результат лучше, чем TDD без логики.

Согласен с тобой. Мой опыт говорит о том же. Непонятно только одно: почему нужно отказываться от одного в пользу другого? Почему нельзя применять TDD вместе с логикой? Где логика такого решения? Подмигивание

kms писал(а) 13. Мая 2010 :: 20:00:
Мы знаем, что наш разум имеет пределы, в том числе и в количестве неких "регистров" и "операций", которыми мы можем одновременно оперировать.
Это не только в программировании, это вообще в жизни.
Значит, при определенных уровнях сложности, наше мышление будет давать сбой, либо требовать чрезмерных ресурсов для безошибочной работы.

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

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

Извините за оверквотинг в данном конкретном случае, но у меня просто рука не поднимается удалить хоть что-то из данного текста.

Так вот, что у меня есть сказать про сложность, проектирование и разум.

Во-первых. Когда я стал практиковать TDD - я научился проектировать гораздо лучше. Именно потому, что само проектирование начало происходить до того, как была написана хоть строчка кода. А не как это бывало раньше: "а, ща быстро сляпаю, раз, раз, упс... не получилось... ну вот тут костылик прилепим, раз, раз, упс... не получилось... мда, надо подумать... О, надо делать вот так... но уже столько кода - не выкидывать же..."

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

Цитата:
это надо отметить.

наливай
« Последняя редакция: 14. Мая 2010 :: 08:13 - fez »  
Наверх
www  
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #17 - 14. Мая 2010 :: 07:02
Печать  
А я сейчас читаю Е-буки по Ruby on Rails (т.к. на данном форуме увидел ссылку на Redmin, понравилось, сейчас стал смотреть как оно работает). Там есть несколько очень интересных концепций, в частности - разработка изначально основывается на Паттерне MVC (Модель, представление, контроллер), еще интересная вещь использование соглашений. Т.е. если ты пишешь код в соответствии с соглашениями, то "конструктор", например scaffold, может за тебя сделать бОльшую часть шаблонного кода (создает таблицу, с именем контрола, заполняет ее указанными полями, создает Представления, для отображения, редактирования, удаления). Можно, конечно, и руками все это прописать... Относительно тестов - возможность использования тестов (папки, необходимые контроллеры) генерируется сразу при создании проекта. Очень любопытная концепция.
  
Наверх
ICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #18 - 14. Мая 2010 :: 07:21
Печать  
Salimbek писал(а) 14. Мая 2010 :: 07:02:
А я сейчас читаю Е-буки по Ruby on Rails ...


данное поведение "Рельсов" исходит больше из Гибкой методологии разработки

однако - подобная генерация прототипов тестов приводит к тому что тесты пишутся позже кода  (причем даже в книгах по Rails разделы тестирования уводятся в конец) или не пишутся вовсе

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


ЗЫ применительно к Редмайн - большинство плагинов тестами не покрыто вовсе - я уже 2 года слежу за изменениями проекта и только один человек из команды разработки использует TDD: это основной разработчик Жан-Филип Ланг (Jean-Philipe Lang)
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать