@oop_ru

Страница 290 из 785
Nik
10.07.2017
11:52:53
ток сорян, я цппст

Aleh
10.07.2017
11:54:08
https://repl.it/JUrG/15 ну или вот

KPABE
10.07.2017
11:54:24
ток сорян, я цппст
спасибо но когда я на своем языке суть не понимаю, то синтаксис другого все усложняет)))на джаве еще понял бы))

Google
Nik
10.07.2017
11:55:30
ну хз, по мне так они все похожи, чай не хаскель

Aleh
10.07.2017
11:55:34
не понимаю о каком верхнем примере ты говоришь

KPABE
10.07.2017
11:55:56
Aleh
10.07.2017
11:56:02
я тоже

KPABE
10.07.2017
12:00:53
я тоже
вот сверху это композиция? https://repl.it/JUrG/16

верхний пример на сайте который я скинул

Aleh
10.07.2017
12:01:29
https://repl.it/JUrG/15 ну или вот
вот посмотри, я ответил на твой вопрос там

Nik
10.07.2017
12:01:35
это композиция, но верх ногами

KPABE
10.07.2017
12:02:20
да
ок как мне вызвать объектом new SomeOne метод parent_method?

Aleh
10.07.2017
12:02:32
это прикол такой?

KPABE
10.07.2017
12:03:09
это прикол такой?
почему? в наследовании я его могу вызвать, а тутт нет

Google
Aleh
10.07.2017
12:03:21
еще раз вот https://repl.it/JUrG/15

Nik
10.07.2017
12:04:03
some->object->parent_method();

Aleh
10.07.2017
12:04:19
some->object->parent_method();
не нарушай закон деметры

сохрани жизнь себе и своим джунам

Nik
10.07.2017
12:04:31
или точнее this->object->parent_method(); изнутри SomeOne

Я сам себе джун

а, понял

ну тогда добавить в SomeOne обертку для parent_method

KPABE
10.07.2017
12:11:59
еще раз вот https://repl.it/JUrG/15
ок предположим, а в чем замена наследованию? тут в композиции у каждого по 1 методу, а в населдовании расширяющий объект имеет уже два метода...

че то я ни але

Aleh
10.07.2017
12:12:24
зачем вам при расширении иметь два метода?

использование наследования для переиспользования кода плохая идея

KPABE
10.07.2017
12:13:47
зачем вам при расширении иметь два метода?
расширяющему объекту доступен свой и родительский метод, а тут мы один объект жестко привязываем к другому и по прежнему и одного и у другого один и тот же функционал

Aleh
10.07.2017
12:15:43
и да, и нет

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

KPABE
10.07.2017
12:17:46
внешний интерфейс у объекта свой, при этом он может общаться со вторым объектом
может есть какой нить пример на пхп или джаве., мол вот смотрите зря здесь применили наследование нужно было композицию юзатть?

Кирилл
10.07.2017
12:20:23
Как назвать сервис-класс для работы с сервисными центрами- SeviceCenterSevice ? XD

KPABE
10.07.2017
12:27:50
https://dou.ua/lenta/articles/composition-vs-inheritance-in-java/ Возможно здесь
да читал ее, вроде там нет такого примера))кстати сайт не открывается

Google
Nik
10.07.2017
12:30:56
Наследовались зря, надо было делать композицию.

(с)

KPABE
10.07.2017
12:32:27
У вас еще не настроен впн по умолчанию?))
причем дома через адресную строку не заходит, но через яндекс поиск спокойно перехожу на сайт и лазию тама, а на работе чето ни так ни этак(

Massimo
10.07.2017
20:46:29
Можно ли скачать какой нить тул на Джет брейнс для питона, чтобы он работал с Джанго и его синтаксисом?????

Massimo
10.07.2017
20:47:32
Где его достать? Просто на оф сайте не нашел

Заранее благодарю

Hack
10.07.2017
20:48:31
могу продать

Sergey
10.07.2017
21:20:28
Где его достать? Просто на оф сайте не нашел
гуглить пробовал? Что-то типа Python IDE. Вообще это чатик немного не той тематики, с подобными запросами иди в чатики питонщиков

Massimo
10.07.2017
21:22:05
"Object-oriented programming"(с)

KPABE
11.07.2017
05:52:55
можно ли считать компоненты симфони тем самым идеальным кодом?

расширяемый, модульный и тп

Sergey
11.07.2017
06:38:50
идеального кода не существует.

но конкретно этот пример можно считать неплохим. Другой вопрос что это тебе лично ничего не дает.

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

KPABE
11.07.2017
06:46:23
но конкретно этот пример можно считать неплохим. Другой вопрос что это тебе лично ничего не дает.
переиспользуемый код который можно использовать где угодно, то бишь он написан 'прально'

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

Google
Sergey
11.07.2017
06:49:41
ну то есть ты можешь попробовать с точки зрения соблюдения принципов SOLID на это смотреть

но намного лучше инвестировать время в тесты, в рефакторинг, в изучение базовых принципов самих по себе (GRASP, SOLID) и за счет первых двух пунктов просто чаще пробовать разные варианты

Ivan
11.07.2017
07:15:19
как эти понятия правильно называются?
@fes0r, подскажешь что-нибудь?

Sergey
11.07.2017
07:16:15
@fes0r, подскажешь что-нибудь?
ну в целом норм, просто я никогда не применяло для этого слово "субъект" хотя оно подходит. Я обычно просто говорю декорируемый объект.

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

Admin
ERROR: S client not available

Sergey
11.07.2017
07:17:32
далее тебе Олег ссылочку неплохую дал

ну то есть твой пример с декораторами в целом норм. Ты можешь делать стаб для драйвера кэша имитируя различные прекондишены (типа нашелся айтем в кэше или нет) и моком проверять как ты видоизменил входящие данные скажем.

Ivan
11.07.2017
07:22:21
вот этот декорируемый объект нельзя назвать зависимостью?

или ищё builder для director

Sergey
11.07.2017
07:25:04
можно конечно

это ж и есть зависимость

Ivan
11.07.2017
07:27:17
а если другой объект попадает в метод, для того чтобы над ним выполнили действия - это уже не зависимость?

build(Builder builder) {}

Ivan
11.07.2017
07:27:55
но у них же какая-то разная природа что ли

Sergey
11.07.2017
07:28:30
причем в случае с билдерами часто циклическая, именно по этой причине в языках типа Java билдеры являются частью того же пакета, где есть объект который ты и собираешь

но у них же какая-то разная природа что ли
ты про то почему что-то мы закрываем стабом а где-то надо мок?

Google
Ivan
11.07.2017
07:29:32
ну это связано как-то, да

Sergey
11.07.2017
07:29:52
ну тип где-то тебе надо просто получить что-то а где-то надо проверить что реально ты взаимодействуешь правильно

тот же кэш - тебе должно быть плевать что именно ты туда ложишь

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

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

стабами ты как раз таки можешь прекондишен выставлять, а моки они для проверки посткондишенов

Ivan
11.07.2017
07:39:26
download() { item = this.remote.fetch(); this.local.save(item); } как такой метод тестировать? стабить remote и мокать local ?

или мокать remote и стабить local?

Sergey
11.07.2017
07:41:55
а тут вообще от юнит теста нет никакого толка

Ivan
11.07.2017
07:42:26
толк появляется, когда мы вносим какую-то логику?

Sergey
11.07.2017
07:42:38
вот если бы между fetch и save было что-то, тогда толк бы был. Ну мол что мы что-то делаем с item

а так ты вернул стаб и проверяешь что стаб и передал. Полностью дублируя реализацию.

такие вещи спокойно покрывает нормальная система типов (TypeScript, Flow)

проблемы могут быть только если контракт fetch поменяется в плане поведения а не типов, но это юнит тесты тоже не проверят.

а интеграционные тесты афера.

Nik
11.07.2017
07:44:48
Sergey
11.07.2017
07:45:36
Всмысле?
J B Rainsberger - Integrated Tests Are A Scam

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