@oop_ru

Страница 126 из 785
Evgeniy
25.02.2017
18:39:20
важный вопрос code coverage

Google
f4rt~
25.02.2017
18:39:23
10%
конечно, я же сужу с своей колокольни, у меня опыта не так много;

Evgeniy
25.02.2017
18:39:28
должен ли он быть 100%

Sergey
25.02.2017
18:39:40
важный вопрос code coverage
бесполезная метрика) намного более полезная - количество регрессий на количество изменений)

Evgeniy
25.02.2017
18:39:41
и дает ли он гарантию что при наличие 100% проблем не будет ?)

Sergey
25.02.2017
18:39:55
должен ли он быть 100%
100% покрытие кода тестами не гарантирует отсутствия багов

Sergey
25.02.2017
18:40:24
НО, покрытие кода может давать тебе представление о том что покрыто а что нет

ну то есть 100% не нужно, но хотя бы 80-90 стремиться стоит

Evgeniy
25.02.2017
18:41:27
поэтому понимание этих метрик приходит с опытом

и зависит от проекта или заказчиков

Sergey
25.02.2017
18:41:53
ну в целом от уровня страха

Google
Evgeniy
25.02.2017
18:41:56
ну и оплаты)

Sergey
25.02.2017
18:42:01
если тебе сыкатно лесть в этот модуль - значит мало тестов

если не сыкатно - значит норм

не ну есть конечно психи которым никогда не сыкатно

для них можно другую метрику брать - количество регрессиий после их "да не страшно тут поправить"

Evgeniy
25.02.2017
18:43:00
ладно срач хорош пойду доку делать )

Sergey
25.02.2017
18:43:12
пойду тесты писать

Evgeniy
25.02.2017
18:43:23
кстате

посмотреть либу снова нет желания ?

по psr/container implementation ?

Sergey
25.02.2017
18:43:46
не

)

Evgeniy
25.02.2017
18:43:54
ок

:D

я сделал лучше)

Sergey
25.02.2017
18:44:18
верю но с этим срачем я исчерпал свой лимит на "потрынденть"

Evgeniy
25.02.2017
18:44:27
ок

f4rt~
25.02.2017
18:44:40
круто когда ты самоорганизованный, наверное

Sergey
25.02.2017
18:45:54
наверное)

но это не про меня)

Google
f4rt~
25.02.2017
18:46:20
значит не про меня и подавно)

Чарлей
25.02.2017
19:49:09
https://t.me/socionika_alignment вот чат. заходите. все без бан и прочего

Evgeniy
25.02.2017
19:51:00
зачем? )

f4rt~
25.02.2017
19:58:54
жалко я ливал и у меня права снялись

F01134H
25.02.2017
20:00:12
шо за пиздец вася)

Aleh
26.02.2017
08:24:57
@fes0r @f3ath потрите может спам?

Paul
26.02.2017
08:29:34
Может они заинтересованы в нём )

Aleh
26.02.2017
08:30:13
весь этот чатик нужен был только ради того, чтобы пропиарить какую-то слабенькую флудилку)

Paul
26.02.2017
08:30:41
теория заговора?)
Нет, банальная коммерция

Sergei
26.02.2017
08:31:22
@f3ath @fes0r 4 messages deleted, reason: spam

Aleh
26.02.2017
08:32:04
Нет, банальная коммерция
да ну, мы ж тут простите в it, зарабатываем(те кто в снг) в разы больше средней. Минута работы будет дороже такой коммерции)

Sergei @f3ath в линки групп можно добавить @frp_ru

Sergei
26.02.2017
08:33:42
эээээ я дальше "удалить сообщение со спамом" не обучен

Aleh
26.02.2017
08:34:09
видимо это только коняка может, как владелец

Sergei
26.02.2017
08:34:19
вероятно

давайте призовем

Aleh
26.02.2017
08:34:53
@ployd а ты где еще сидишь? вроде в чатике ноды тебя видел, а в frp не видел

Paul
26.02.2017
08:35:47
Google
Paul
26.02.2017
08:35:58
frp это про реактивщину?

Aleh
26.02.2017
08:36:12
там в основном про ramda в js )

Paul
26.02.2017
08:36:20
Ну, хоть что-то

Sergey
27.02.2017
12:41:54
давайте срач по LSP

<?php class Order { protected $items = []; public function addItem(Item $item) { $this->items[] = $item; } public function getItems() { return $this->items; } } class FreeOrder extends Order { public function addItem(Item $item) { if ($item->price() !== 0) { throw new Exception(); } $this->items[] = $item; } } class OrderCollector { public function сollect(Order $order, $items) { foreach ($items as $item) { $order->addItem($item); } } } FreeOrder нарушает LSP тем что бросает эксепшен и тем самым делает "неожиданные" вещи, или это ок?

Denis
27.02.2017
13:03:15
Так методы разные

Или я туплю?)

Admin
ERROR: S client not available

Dimitriy
27.02.2017
13:03:50
это унаследованный метод, там вообще вызов к паренту должен быть

Denis
27.02.2017
13:04:10
тьфу)

Sergey
27.02.2017
13:07:16
код не сложный, можно и без гиста прочитать)

Aleh
27.02.2017
13:07:24
Есть же ГИСТ!
ну давай еще и здесь срачик на эту тему)

Aleh
27.02.2017
13:07:58
чем нарушает?
ты же и описал, вместо ожидаемого добавления пользователю Order произойдет exception

Dimitriy
27.02.2017
13:08:00
не обязательно
ну необязательно, если имплементация принципиально отличается

а если идёт повторение кода, надо парента дёргать вместо того чтобы код дуплицировать

Google
Dimitriy
27.02.2017
13:08:30
в большинстве случаев

Sergey
27.02.2017
13:08:35
ну необязательно, если имплементация принципиально отличается
если заменить на вызов родительского метода, особо смысл не поменяется. суть не в этом

окей. в принципе сказано о подтипах определенного типа. интерфейсы как известно являются типами так вот теперь если мы уберем наследование и сделаем с интерфейсами, мы по прежнему нарушаем LSP?) @mkusher <?php class OrderInterface { public function addItem(Item $item); public function getItems(); } class Order implements OrderInterface { protected $items = []; public function addItem(Item $item) { $this->items[] = $item; } public function getItems() { return $this->items; } } class FreeOrder implements OrderInterface { public function addItem(Item $item) { if ($item->price() !== 0) { throw new Exception(); } $this->items[] = $item; } public function getItems() { return $this->items; } }

и если мы в первом варианте заменить эксепшен на return?

Sergey
27.02.2017
13:20:56
интерефейс не определяет никаких эксепшенов. точно так же как и в переопределенном методе нигде не описаны эксепшены

Aleh
27.02.2017
13:22:42
банальный пример interface List<T> { add(item: T): void; remove(item: T): void; has(item: T): void; length(): number; } банальный примеры контракта, которые в типе описать нельзя здесь: list.add(a); expect(list.has(a)).to.be.true; или list.add(a); expect(list.length()).to.be(1);

тогда некий class DoubleList который делает вместо add add(item: T) { this.internal.push(item); this.internal.push(item); } нарушит этот контракт, потому что длина изменилась не на один, а на два

потому весь вопрос в том, чего ты от интерфейса ждешь)

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

ну как-то так

Sergey
27.02.2017
13:31:04
ну со спекой притянуто за уши

Aleh
27.02.2017
13:31:25
?

спека это необязательно код phpspec или чего-то еще, findUsages в шторме тоже в каком-то смысле составляет спеку)

Sergey
27.02.2017
13:32:01
у меня может быть интерфейс для кеша, и реализации типа Void, Array, Memcached

Aleh
27.02.2017
13:32:28
думаю да, может быть

Sergey
27.02.2017
13:33:07
и закрывать глаза на разные имплементации интерфейса

Aleh
27.02.2017
13:33:23
ничего не понял

в смысле

Страница 126 из 785