понедельник, 23 декабря 2013 г.

Ещё раз про BDD, DelphiSpec & Co

Про BDD (http://en.wikipedia.org/wiki/Behavior-driven_development) "вообще" и "огурец" (http://en.wikipedia.org/wiki/Cucumber_(software)) в частности - я читал "много и вдумчиво".

И НИКАК НЕ МОГ понять "в чём соль".

И хотя я даже приводил ссылки на Романа Янковского (совсем недавно) - http://programmingmindstream.blogspot.ru/2013/12/delphispec.html

И приводил "свою реализацию" http://programmingmindstream.blogspot.ru/2013/12/delphispec_20.html -  (и  - http://programmingmindstream.blogspot.ru/2013/12/delphispec-2.html)

Я ВСЁ РАВНО "не мог понять" - ЗАЧЕМ ЭТО.

Я даже "поглумился" над словами Багеля "UML для начинающих, по сути?" (приведённые вот тут - http://delphimaster.ru/cgi-bin/forum.pl?id=1387384044&n=3&p=1).

Типа "какой UML" и "вообще О ЧЁМ ОН". :-)

И потом я ещё ОЧЕНЬ ДОЛГО думал над вот этой фразой - "вот я и не понял, тест вместо меня будет генерить основной код который мне потом надо будет отлаживать, или я буду писать свой обычный код и потом еще писать сценарии? 
я действительно не вижу причин делать этот over-скриптинг, и думал ты мне на пальцах и своими словами объяснишь, так как статьи на хабре мне никак не объяснили - куча иностранных крутых слов, а конкретики никакой, увидеть бы реальный проект куда оно внедрено, позапускать и сравнить. А то вокруг только теоретические выкладки про "эффективность"" (http://delphimaster.ru/cgi-bin/forum.pl?id=1387384044&n=3&p=3).

Пока не перечитал "раз 10-ть" вот это - http://programmingmindstream.blogspot.ru/2013/12/php-bdd-behat.html и прямая ссылка - http://habrahabr.ru/post/110422/.

"Лирику" про "Feature" и "Should" - опущу.

Заострю внимание вот на чём:

"Сохраняем, и вбиваем в консоль команду
$ behat features

На выходе получаем:
1 scenario (1 undefined)
5 steps (5 undefined)
0.091s

You can implement step definitions for undefined steps with these snippets:

$steps->Given('/^I have an calculator$/', function($world) {
    throw new \Everzet\Behat\Exception\Pending();
});

$steps->When('/^I have entered (\d+) as first number$/', function($world, $arg1) {
    throw new \Everzet\Behat\Exception\Pending();
});

$steps->And('/^I have entered (\d+) as second number$/', function($world, $arg1) {
    throw new \Everzet\Behat\Exception\Pending();
});

$steps->And('/^I press \'([^\']*)\'$/', function($world, $arg1) {
    throw new \Everzet\Behat\Exception\Pending();
});

$steps->Then('/^The result should be (\d+)$/', function($world, $arg1) {
    throw new \Everzet\Behat\Exception\Pending();
});

Это говорит нам о том, что у нас не определены «шаги» сценария. Но мы-то знаем еще больше — у нас нет класса калькулятора. Напишем, не проблема.

class Calc {
    protected $first = 0;
    protected $second = 0;
    protected $result = 0;

    public function setFirst($num){ $this->first = $num; }
    public function setSecond($num){ $this->second = $num; }
    public function add(){ $this->result = $this->first + $this->second; }
    public function getResult(){ return $this->result; } 
}"

Вот тут - МНЕ СТАЛО ПОНЯТНО.

Это реально Behaviour Driven Development.

Т.е. - НЕТУ - "over-скриптинг". Есть "описание фич", которое "порождает проектные классы".

Это для языков с Duck-Typing.

Когда Я ЭТО ПОНЯЛ - я сразу написал Роману - "в твоём подходе не хватает "генерилки" классов".

И "ОКАЗЫВАЕТСЯ" - прав был Багель со словами - "UML для начинающих, по сути?" ПРАВ!

ИМЕННО! "UML для начинающих, по сути"!!!

Для Strict-Typing языков правда такое - СЛОЖНЕЕ сделать. Но всё РАВНО МОЖНО.

Я уже примерно понимаю как.

Но "и это не важно"...

Главное - "суть подхода". ОТКУДА и ЧТО берётся. Что "телега", а что "лошадь" (http://programmingmindstream.blogspot.ru/2013/12/test-driven-development.html).

Скажем так. "Если говорить о BDD" - то Роман не с "того конца начал" (это НЕ КРИТИКА, а "заметки на полях"), а я "со своей эмуляцией" - И ПОДАВНО...

Роман С ДРУГОГО и НЕ МОГ начать - в Strict-Typing языке. НЕ МОГ. Иначе - он был бы ГЕНИЕМ.

Но! ГЛАВНОЕ, что "понимание достигнуто"...

За Романа говорить не буду. Но "для меня" это "тот самый текстовый UML" о котором я думаю "уже почти 10-ть лет".

Вот как-то так...

P.S. не ищите тут "менторства", его тут нет. Наоборот - это пост "сомневающегося" человека, который "ищет ответы".

Комментариев нет:

Отправить комментарий