
Sergey
23.12.2016
21:06:06

guga
23.12.2016
21:06:27
Скорее от незнания самого хибера, много проблем
а в нём очень много неочевидных мест.

Aleh
23.12.2016
21:06:53
вот презенташка Янга как раз в тему

Google

Sergey
23.12.2016
21:06:55
ну да... в целом есть такая штука. Выше @mkusher как раз об этом кидал доклад Грега Янга

Aleh
23.12.2016
21:06:56
нехер юзать магию)

Sergey
23.12.2016
21:07:15
у меня по сути критерий при выборе кандидата - знает он доктрину или нет
если нет - шансы что я его буду брать резко понижаются

guga
23.12.2016
21:07:49

Sergey
23.12.2016
21:07:58
и это реально проблема потому что из 10-ти синьеров только парочку не пугают слова unit of work

Sergey
23.12.2016
21:08:00
о сисярп

Aleh
23.12.2016
21:08:05
а есть стикеры, где янг, дядя Боб, Фаулер, Бек, Эванс и вот эти все чуваки?

Sergey
23.12.2016
21:08:52
Хм, зато есть вариант научить как правильно
есть, но в это надо инвестировать время. Потому такие кандидаты если и появляются, я обычно смотрю насколько много времени уйдет что бы обучить... был у меня один чувак год-полтора назад
он доктрину и вообще подобные штуки не юзал никогда

Sergey
23.12.2016
21:09:19
mybatis или как там его

Google

guga
23.12.2016
21:10:59

Sergey
23.12.2016
21:11:13
2 часа у вайтборда, я ему нарисовал что зачем, зачем unit of work
он денек почитал доку и прошарился
причем... не просто прошарился а знал как оно чего там на вполне приемлимом уровне

Sergey
23.12.2016
21:11:15
это ж вроде маппинг и все?

guga
23.12.2016
21:11:33
ну да, весь sql пишешь руками
в xml
?

Sergey
23.12.2016
21:11:55
я не знаю как тебе, а для меня это уже сигнальчик что читать доку он не будет

Sergey
23.12.2016
21:12:17

Sergey
23.12.2016
21:12:39

Sergey
23.12.2016
21:12:43
или делают персист для каскадных сущностей...

Sergey
23.12.2016
21:12:45
и ВАУ, работает! херасе!
ну короч доктрине на начальном уровне можно научить
если ты мыслишь не табличками и можешь объектную модель представить
я обычно на это смотрю, насколько чувак тугой

Sergey
23.12.2016
21:13:40
название mybatis странное какое-то. в тайской рекламе зубную пасту рекламировали с подобным названием)

Sergey
23.12.2016
21:13:50
если он привык что "статика это норм", что "писать можно в публичные проперти из вьюшки"
то придется потратить немало времени что бы переучить... а надо ли оно

Google

Sergey
23.12.2016
21:14:11
@guga4ka как вы обычно определяете что человек не дебил?)

Sergey
23.12.2016
21:14:29
вот мне тоже интересно)
ибо у меня пока только субъективная оценка по совокупности ответов
даже... не то что не дебил.... я плохо пока представляю как можно оценить способность обучаться на собесе
за ограниченное время

guga
23.12.2016
21:16:19

Sergey
23.12.2016
21:16:30
а потом испыталка?

guga
23.12.2016
21:16:52
ну я скипал конторы, в которых были не интерсные интревью

Sergey
23.12.2016
21:17:06
а ты щас на галере какой-то?
ты ж в Харькове вроде?

guga
23.12.2016
21:17:12
некторые конторы скипали меня
в целом довольно просто отпеределить.
но это лично для себя.
Чаще всего, если человек понимает core языка, особых затыков в изучении нового фреймворка у него не будет, особенно, когда есть у кого спросить
Нр вот галерам, чаще всего нужен и чтец и жнец и на дуде игрец
пилю бэкенд для небольших апликух для знакомых
А было довольно сильно обидно, когда не прошел в одну довольно занятную контору

Sergey
23.12.2016
21:20:45
а че не прошел? оверклавифайд?

guga
23.12.2016
21:20:55
Тестовое у них было, написать парочку очередей

Google

guga
23.12.2016
21:21:16
моя блокирующая очередь почему-то умерла на 500 конекшенах, по их словах
нужно будет потыкать код, который написал, на досуге

Sergey
23.12.2016
21:23:22
@Enleur по поводу нашего холивара на чем писать тесты... напили простенький тест класса Calculator о том что метод calculate($a, $b) возвращает 2

Sergey
23.12.2016
21:23:55
эм)

Sergey
23.12.2016
21:24:13
ну... есть одна штука которая меня бесит и я вот думаю может ты по другому готовишь тест кейсы
вот та штука про которую ты говорил как контр-аргумент для кодогенерации спека... что шторм это умеет и могет
вот... я свой шторм не смог этому обучить
class AccountTest extends TestCase
{
private $account;
public function setUp()
{
$this->account = new Account();
}
public function test_change_account_balance()
{
$this->account->addUnconfirmedBalance(100);
$this->account->addUnconfirmedBalance(-20);
self::assertEquals('80', $this->account->unconfirmedBalance());
}
}
вот как у меня
например


Sergey
23.12.2016
21:29:21
<?php
namespace Tests;
class CalculatorTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Calculator
*/
private $calculator;
protected function setUp()
{
$this->calculator = new Calculator();
}
/**
* @dataProvider dataProvider
*/
public function testCalculate(float $a, float $b, float $expected)
{
$result = $this->calculator->calculate($a, $b);
$this->assertEquals($expected, $result);
}
private function dataProvider(): array
{
return [
[1, 1, 2],
[2.2, 2.2, 4.4],
[1, 2, 3],
[0, 0, 0],
];
}
}

Sergey
23.12.2016
21:29:40
оке, а теперь... вот так мой пример записывается в спеке
class AccountSpec extends ObjectBehavior
{
function it_changes_unconfirmed_balance()
{
$this->shouldNotThrow()->duringAddUnconfirmedBalance(100);
$this->shouldNotThrow()->duringAddUnconfirmedBalance(-20);
$this->unconfirmedBalance()->shouldReturn('80');
}
ну то есть... банально меньше кода

Sergey
23.12.2016
21:30:39
сек)

Sergey
23.12.2016
21:30:40
я болен?
я ленив? - да, хочу писать меньше!
хочу хочу хочу
но и заставлять учить phpspec + phpunit я не хочу

Google

F01134H
23.12.2016
21:31:00
ужас какой

Sergey
23.12.2016
21:31:10
а property based testing в спеке делать не удобно
во всяком случае пока-что

Sergey
23.12.2016
21:31:52
ну ок, могу сократить код
<?php
namespace Tests;
class CalculatorTest extends \PHPUnit_Framework_TestCase
{
/**
* @dataProvider dataProvider
*/
public function testCalculate(float $a, float $b, float $expected)
{
$calculator = new Calculator();
$result = $calculator->calculate($a, $b);
$this->assertEquals($expected, $result);
}
private function dataProvider(): array
{
return [
[1, 1, 2],
[2.2, 2.2, 4.4],
[1, 2, 3],
[0, 0, 0],
];
}
}

Sergey
23.12.2016
21:32:46
$calculator = new Calculator();
хочу вот это вообще как-то убрать)
ооо еще одна штука

Sergey
23.12.2016
21:33:21

Sergey
23.12.2016
21:33:31
как тестировать конструирование объекта в phpunit? я правильно понимаю что если ты хочешь это потестить тебе уже не получится юзать setUp?
или setUp не будет ничего полезного делать?

Sergey
23.12.2016
21:33:48
в смысле тестить конструирование?
что это за тест такой?

Sergey
23.12.2016
21:34:01
что мол если ты передал в конструктор херню, то должен выкинуть исключение
в phpspec я могу написать что-то типа

Sergey
23.12.2016
21:34:11
ок, щас

Sergey
23.12.2016
21:34:41
$this->beConstructedWith($foo, $bar);
$this->shouldThrow()->duringInstantiation();
хотя ладно кейс с setUp будет таким же и в спеке
там просто это называется let

Sergey
23.12.2016
21:35:04
public function testShitstorm()
{
$this->expectException(\InvalidArgumentException::class);
new \Calculator('omfg');
}
или же
/**
* @expectedException \InvalidArgumentException
*/
public function testShitstorm()
{
new \Calculator('omfg');
}