Behaviour driven programming или переворот в сознании программераBDD - behaviour driven programming, по-нашему "поведенческое программирование", основанное на мысли о том, что делает это, кому это наужно, и для чего делать это. В основу bdd заложено tdd test driven development (не слыхали? тогда бегом на wiki, восполнять пробелы в знаниях).
Все эти dd приводят вас в ужас? Попробую объяснить человеческим языком. Раньше ведь как было? Напишешь бывало, код, напишешь еще, расширяешь функционал, расширяешь, даже не задаваясь вопросом нужен ли он, или только для "галочки", как и кто этим кодому будет пользоваться? А потом кода становится много и один код начинает цеплять кусочки работы другого кода, т.е. любое изменение одного объекта может отразиться на работе других объектов, а ошибки в конечном счете будут вылазить уже в самом неприятном месте - на десктопе конечного пользователя. До недавних пор ситуацию можно было бы назвать трагической, если бы не наличие тестов, которые кардинально меняют ситуацию. Особенно когда мы пишем тесты еще ДО НЕПОСРЕДСТВЕННОГО НАПИСАНИЯ КОДА. Как так? А вот так. Например, объект Box должен уметь добавлять некий элемент item в массив items. Все что нам нужно проверить, так это то, что элемент добавился корректно, т.е. что Box.add(item) будет добавлять в Box.items[] новый item. Пишем тест, @box=Box.new Вот и всё. Если все работает, то assert_not_nil вернет true и наши тесты пройдут. Вот теперь мы можем написать непосредственно метод объекта Box: def add(item) По мере написания нового кода - мы будем дописывать тесты и каждый раз прогонять наш проект все большим числом проверок, что обеспечит как качество кода, так и понятность и логичность в бизнес-объектах в целом. Это TDD, который нативно поддерживается Ruby и Rails. Но есть на свете умные люди, которые пошли еще дальше, и стали делать тесты всё более человечными, для чего был написан плагин RSpec и написание при помощи него тестов и кода стало называться behaviour driven programming. Основная мысль RSpec - создание спецификаций и выражение языком близким к человеческому того, чего ожидается от объекта, т.е. его поведение, а вокруг спецификации уже выстраиваются тесты и сам код. Замечательный туториал для RSpec for Rails: http://blog.davidchelimsky.net/articles/2006/11/06/view-spec-tutorial Внимание, правильный url для установки плагина RSpec: svn://rubyforge.org/var/svn/rspec/tags/REL_0_7_5_1/rspec_on_rails/vendor/plugins/rspec_on_rails т.е. ruby script/plugin install svn://rubyforge.org/var/svn/rspec/tags/REL_0_7_5_1/rspec_on_rails/vendor/plugins/rspec_on_rails Да, вот такая вот мэйнструя в программировании вообще и для Rails в частности. Оставить комментарий |
© Максим Прокопов 2005-2024 | О сервере |