IT-Expert
  IT-Expert / Веблог / Behaviour driven programming или переворот в сознании программера
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2023 год
 за 2022 год
 за 2021 год
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 

      Behaviour driven programming или переворот в сознании программера

      23:21, 16 ферваля 2007 ( Web Development Ruby Rails  )

      BDD - behaviour driven programming, по-нашему "поведенческое программирование", основанное на мысли о том, что делает это, кому это наужно, и для чего делать это. В основу bdd заложено tdd test driven development (не слыхали? тогда бегом на wiki, восполнять пробелы в знаниях).

       

      Все эти dd приводят вас в ужас? Попробую объяснить человеческим языком. Раньше ведь как было? Напишешь бывало, код, напишешь еще, расширяешь функционал, расширяешь, даже не задаваясь вопросом нужен ли он, или только для "галочки", как и кто этим кодому будет пользоваться? А потом кода становится много и один код начинает цеплять кусочки работы другого кода, т.е. любое изменение одного объекта может отразиться на работе других объектов, а ошибки в конечном счете будут вылазить уже в самом неприятном месте - на десктопе конечного пользователя. До недавних пор ситуацию можно было бы назвать трагической, если бы не наличие тестов, которые кардинально меняют ситуацию. Особенно когда мы пишем тесты еще ДО НЕПОСРЕДСТВЕННОГО НАПИСАНИЯ КОДА. Как так? А вот так. Например, объект Box должен уметь добавлять некий элемент item в массив items. Все что нам нужно проверить, так это то, что элемент добавился корректно, т.е. что Box.add(item) будет добавлять в Box.items[] новый item.

      Пишем тест,

      @box=Box.new
      @box.add(item)
      assert_not_nil box.items

      Вот и всё. Если все работает, то assert_not_nil вернет true и наши тесты пройдут.

      Вот теперь мы можем написать непосредственно метод объекта Box:

      def add(item)
         @items<<item
      end 

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

      Это 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 О сервере