@oop_ru

Страница 270 из 785
Sergey
27.06.2017
21:59:56
т.е у нас есть щас контроллер, который направляет вызов с сервис. это сервис спрашивает apiClient и gravatarWrapper(который делает запрос к граватару и если ниче не вернуло, возвращает дефолт картинку) и возвращает до самого верха результат этого всего дела?

Sergey
27.06.2017
22:00:16
и это ок, если ты можешь так разделить систему, и ты очень хорошо все сделал с точки зрения связанности/зацепления

Sergey
27.06.2017
22:00:31
проблема в том что 95% разработчиков а то и больше так сделать никогда не смогут

Google
Sergey
27.06.2017
22:00:53
и в этом всем нужны тесты только для клиентов к апишке юзеров и граватара, и то если это не готовые либы

Sergey
27.06.2017
22:00:56
может быть если какой-то код перекинуть туда где он нужнее, а какой-то выкинуть в другое место, ситуация резко поменяется?

Sergey
27.06.2017
22:01:22
ну может быт ьпроблема с декомпозицией?
в чем проблема? мы разбили код, все логично, простенько

Sergey
27.06.2017
22:02:06
я видал проекты где "все разбили, простенько" но что-то как-то не очень. ЛОгика размазана по классам, по отдельности их тестить нет смысла но и то что они лежат отдельно друг от друга как бы тоже смысла и простоты не добавляет

Sergey
27.06.2017
22:02:37
т.е возвращаемся к оригиналу когда у нас прям в контроллере эти операции выполняются? (я про пример выше с апишкой)

Sergey
27.06.2017
22:03:07
т.е возвращаемся к оригиналу когда у нас прям в контроллере эти операции выполняются? (я про пример выше с апишкой)
нет, там мы все разобрали, там есть сервис который юзера достает. может быть есть декоратор который провайдер аватарок просит аватарку дать

а контроллер просто делигирует логику в определенной последовательности

Sergey
27.06.2017
22:03:28
ну там получается тесты нам не нужны

Sergey
27.06.2017
22:03:38
ну там получается тесты нам не нужны
они просто будут очень простые

но они не сказать что бесполезны

Sergey
27.06.2017
22:03:49
либо сервис, который дергает юзеров и граватары, будет тестироваться только верификацией вызовов

Sergey
27.06.2017
22:04:13
либо сервис, который дергает юзеров и граватары, будет тестироваться только верификацией вызовов
я в моках почти никогда не ставлю shouldBeCalled если тебя это интересует)

Google
Sergey
27.06.2017
22:04:46
я не это хочу потестить как правило

а что будет с тестовым кодом если оно таки эту штуку вызовет

Sergey
27.06.2017
22:06:05
ну вот наш сервис с методом, такой выходит? function findUser($id){ $user = $this->apiClient->findUser($id); if(null === $user) throw new NotFoundException(); $user->setAvatar($this->gravatarWrapper->get($user->getEmail)); return $user; }

Sergey
27.06.2017
22:06:49
ну тип того

Sergey
27.06.2017
22:07:01
какой для него тест будет?

Sergey
27.06.2017
22:07:26
мне не очень нравится конечно...

я бы $user->setAvatar($this->gravatarWrapper->get($user->getEmail));

вынес бы в декоратор

Sergey
27.06.2017
22:07:59
ты декоратор хочешь завязать на юзере?

Sergey
27.06.2017
22:08:02
тогда простенький тест кейс что бы плевался эксепшенами

Sergey
27.06.2017
22:08:40
тогда простенький тест кейс что бы плевался эксепшенами
и в тесте у тебя будет проверка того что throw в пхп нормально работает?

Sergey
27.06.2017
22:09:14
function findUser($id) { $user = $this->next->findUser($id); $user->setAvatar($this->avatars->forEmail($user->getEmail()); return $user; }

и в тесте у тебя будет проверка того что throw в пхп нормально работает?
ты ж не throw тестишь, а то что у тебя в случае null идет throw

Sergey
27.06.2017
22:09:34
null object?

или куда проверка на null делась

Sergey
27.06.2017
22:10:12
null object?
допустим это декоратор для нашего адаптера который уже хэндлит кейс что null-а у тебя не будет никогда

p.s. и да, я скорее всего захерачил бы подобное без тестов в контроллере прямо

Sergey
27.06.2017
22:10:50
вот так простенький кейс из 4х строчек кода превратился в 4 класса, с тестом на каждый)

Sergey
27.06.2017
22:11:07
я могу тебе кейс который сегодня покрывал рассказать

Google
Sergey
27.06.2017
22:11:13
тоже на тему клиентов к API

Sergey
27.06.2017
22:11:22
ай не, давай завтра

а то спать тоже полезно

Sergey
27.06.2017
22:11:28
ну как хочешь

сон для слабаков

Sergey
27.06.2017
22:11:34
?

Racibor
27.06.2017
23:01:17
приветствую, здесь есть кто-то с кем можно обкашлять разговоры о linux ??

F01134H
27.06.2017
23:05:15
нету

Mykola
27.06.2017
23:17:03
нету

Андрэ
28.06.2017
06:05:54
нету

Sergei
28.06.2017
09:36:12
Кто то может кинут что то из Боба Мартина? только самое лучшее, некоторые видео на ютубе с не очень хорошими отзывами.

Sergei
28.06.2017
09:39:55
вчерашний не подходит?
Ну в отзывах вроде ничего.

Hack
28.06.2017
11:26:36
всем ку

F01134H
28.06.2017
11:50:45
парни, сорян за оффтоп, что означает термин throttling?

Андрэ
28.06.2017
11:52:18
частота запросов типа

Andrey
28.06.2017
11:57:57
парни, сорян за оффтоп, что означает термин throttling?
Смотря где. Процессор троттлит - процессор снижает свою частоту под нагрузкой, чтобы не перегреться.

Всё зависит от контекста.

F01134H
28.06.2017
11:58:10
в api

к примеру

Google
Viktor
28.06.2017
11:58:26
парни, сорян за оффтоп, что означает термин throttling?
В процессорах есть такой механизм если не ошибаюсь, забивание пустых операций в цепочку выполнения что бы уменьшить нагрузку на проц, срабатывает при перегреве например. Для себя предствляю как на велосипедах старых могли прохапывать педальки )

F01134H
28.06.2017
11:58:45
Понял

Admin
ERROR: S client not available

F01134H
28.06.2017
11:58:55
т.е. это механизм работающий при рейт лимитах, пропускающий запрос

Denis
28.06.2017
12:13:23
Так он в очередь ожидания складывает или просто не принимает операции?

val
28.06.2017
12:16:16
скорее игнорит

Denis
28.06.2017
12:16:31
Игнорит операции?

Жестоко

Javharbek
28.06.2017
12:16:49
Кто знает хорошие книги по ООП который сам читал может посоветовать.

Denis
28.06.2017
12:17:29
Дэвид вэст object thinking вроде

Javharbek
28.06.2017
12:18:41
Дэвид вэст object thinking вроде
На русском языке есть редакция?

Like
28.06.2017
12:21:01
Javharbek
28.06.2017
12:22:13
Поэтому и спросил потому что в гугле только в english version есть

Like
28.06.2017
12:22:27
Denis
28.06.2017
12:23:41
Зачем русский? Переводы же непонятные почти всегда :)

Вон попробую переведи throttling

Aleh
28.06.2017
12:24:26
ну да, обычно перевод надо читать вместе с оригиналом

сверяя слова)

Google
Denis
28.06.2017
12:24:52
Извращенцы)

Aleh
28.06.2017
12:25:15
в таком случае конечно же пропадает смысл в чтение перевода совсем

Javharbek
28.06.2017
12:26:51
Денис, вы читали эту книгу?

Denis
28.06.2017
12:27:16
Читал)

Javharbek
28.06.2017
12:28:16
Читал)
Примеры есть что особеного есть в этой книги от остальных книг по вашему?

Sergey
28.06.2017
12:30:23
david west еще приложил руку к "Head first object-oriented analysis and design", кто-то читал?

Javharbek
28.06.2017
12:35:58
Ещё есть книги интерестные по Объектно-орентированому программирование (ООП).

val
28.06.2017
12:41:34
Бертран Мейер. Объектно-ориентированное конструирование программных систем.

Denis
28.06.2017
12:42:35
Блин, чувак, ООП крутится вокруг трёх слов: инкапсуляция, наследование, полиморфизм. Почитай про них и всё станет ясно. А остальное это конкретные практики и рекомендации вроде SOLID, GRASP, PATTERNS

А лучше читай нормальный ОО код.

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