
Evgeniy
09.07.2017
17:05:00
или в php 7.0
не помню в каком точно

F01134H
09.07.2017
17:05:12

Evgeniy
09.07.2017
17:05:31
https://wiki.php.net/rfc/traits-with-interfaces

Google

Сергей
09.07.2017
17:05:35

F01134H
09.07.2017
17:06:14

Сергей
09.07.2017
17:06:24
но если в пхп интерфейсы норм работают и есть мулти-implements, то даже норм

Evgeniy
09.07.2017
17:06:34
там нормальная система типов
и там тоже есть отличия в том что там зовется и чем обычно являтеся

Сергей
09.07.2017
17:07:43

F01134H
09.07.2017
17:07:49
PHP traits == JS mixins

Сергей
09.07.2017
17:07:53

Evgeniy
09.07.2017
17:08:35
да мне там они больше нравятся
и язык rust в целом мне очень нравится

Google

Evgeniy
09.07.2017
17:08:53
но реальность такова что мне платят за работу в пхп
вот например взять java (SE) и php (5 или 7) и попоробывать сравнить объективно, по всем параметрам выигрывает java

Сергей
09.07.2017
17:09:46

Evgeniy
09.07.2017
17:09:55
но нахуярить портотип на php намного быстрей

Сергей
09.07.2017
17:09:56

Evgeniy
09.07.2017
17:10:09
мне тоже
я был бы очень рад если бы раст стал популярней
но реальность такова что гугл двигает go

Сергей
09.07.2017
17:10:22
если сюда добавить ruby (on rails), то все остальные по скорости прототипирования сосут

Evgeniy
09.07.2017
17:10:48
хз мне руби не нравится чисто субьетивно и по синтаксису
я уж лучше боль и страдания в виде многословности java приму
но это имхо, каждому нравится что то свое

Сергей
09.07.2017
17:11:23
ну субъективное, спорить не буду
Но рельсы это самое мощное что есть

F01134H
09.07.2017
17:11:36

Сергей
09.07.2017
17:11:50
сам писал
Руби знаю плохо, рельсы тоже
Но прототип проекта сделал за месяц
И зараза он работал

Evgeniy
09.07.2017
17:11:53
где то так

Сергей
09.07.2017
17:12:00
и сейчас)
действительно мощных альтернатив нет
на всё нужно много человекочасов, чтобы ускорить дальнейшую разработку

Андрэ
09.07.2017
17:12:31

Google

Сергей
09.07.2017
17:13:16

Андрэ
09.07.2017
17:14:06
ой, да, typescript имел ввиду. Ну es6-7 тоже ок, да.

Andrey
09.07.2017
17:14:10

Сергей
09.07.2017
17:14:39

Котяй Негодяй
09.07.2017
17:55:23

Andrey
09.07.2017
17:55:39

Котяй Негодяй
09.07.2017
18:00:59
Flow не добавляет в язык новых рантайм конструкций. По сути, код без Flow и код с Flow — это одно и то же с точки зрения рантайма. В то же время, Flow добавляет абстрактные языковые конструкции, что позволяет нам утверждать, что это другой язык.

Sergey
09.07.2017
20:54:16

Сергей
09.07.2017
20:55:29

Sergey
09.07.2017
20:56:08
Flow тут выигрывает только за счет того что кое где больше чего умеет. Ну и в целом дальше начинается чистая вкусовщина и религия
для нормальной типизации нужна нормальная информация о типах в компайл тайм
никаких "абстракций"

Алексей
09.07.2017
21:01:23

Ivan
10.07.2017
09:24:00
ребята, подскажите, использование в юнит тестах shouldBeCalled/shouldNotBeCalled, это где-то хорошо, а где-то плохо
плохо, когда мы проверяем, как работают детали реализации?
а хорошо, когда мы проверяем, правильно ли объект работает с другим?

Google

Ivan
10.07.2017
09:26:42
стоит ли тут разделять понятия "зависимостей" и каких-нибудь "субъектов" действия?
как пример, кэширующий декоратор, зависимость - драйвер кэша, субъект - декорируемый объект
как эти понятия правильно называются?

Aleh
10.07.2017
10:06:07
вопрос тонкий, где кончается реализация и начинается взаимодействие с другими объектами это хороший вопрос
не в тему тестов: http://wiki.c2.com/?EncapsulationIsHierarchical

KPABE
10.07.2017
11:02:43
а как композиция может заменить наследование? есть маленький просто пример?
и агрегация этож похоже на dependency inject

F01134H
10.07.2017
11:04:33
так и есть
а вообще, это две разные вещи
иногда разумно юзать наследование, иногда композицию
а разница банальна вообще
вместо
class Test { }
class Some extends Test { }
юзаешь
class Test { }
class Some {
// тут через DI добавляешь Test
}
ну или как то так

Aleh
10.07.2017
11:11:39

F01134H
10.07.2017
11:11:51
Существует два подвида этого отношения: если один объект создает другой объект и время жизни "части" зависит от времени жизни целого, то это называется "композиция", если же один объект получает ссылку (указатель) на другой объект в процессе конструирования, то это уже агрегация.

KPABE
10.07.2017
11:12:16

Nik
10.07.2017
11:12:44
Вызываешь методы через объект класса.

F01134H
10.07.2017
11:12:56

Aleh
10.07.2017
11:13:03
class Some {
constructor(test: Test) { this.test = test }
doSmth() { this.test.doSmth() }
}

F01134H
10.07.2017
11:13:03
через DI

Google

KPABE
10.07.2017
11:27:05
https://repl.it/JUrG/8
не совсем пока понимаю в чем суть

Aleh
10.07.2017
11:28:47
я не понимаю пока вопроса

F01134H
10.07.2017
11:32:19
не то что бы вопрос был непонятен, просто он не имеет смысла
ты либо понимаешь, где юзать композицию, а где наследование, либо тебе это пока не нужно

KPABE
10.07.2017
11:36:54
как в первом где композиция вызвать родительский метод?
дочернему объекту вызвать родительский метод

Aleh
10.07.2017
11:38:01

KPABE
10.07.2017
11:39:14

Nik
10.07.2017
11:39:17

Aleh
10.07.2017
11:39:44

KPABE
10.07.2017
11:45:04

Aleh
10.07.2017
11:46:01
у тебя есть два объекта, ты не знаешь как один может вызывать методы другого объекта?

Nik
10.07.2017
11:46:37
SomeOne.some.parent_method();
А, у тебя классы наоборот

KPABE
10.07.2017
11:50:52

Aleh
10.07.2017
11:51:49
опять ты неправильно вопрос задаешь
забудь про классы, думай про объекты