Vladimir
может быть разве что местами с комментариями, которых немного
special agent
Anonymous
Если я передаю экземпляр одного класса в качестве аргумента конструктора второго класса и сохраняю его в виде свойства экземпляра второго, это будет считаться реализацией dependency injection?
Дима
Дима
Vladimir
> @bigslycat
это будет считаться реализацией dependency injection
А какая разница?
Дима
Я кстати так и делал, когда надо было управлять зависимостями
Anonymous
Ну, на самом деле, меня волнует не столько соответствие паттернам, сколько реальная несвязанность кода.
Дима
Vladimir
Ну да, это и есть dependency injection
Anonymous
Я просто узнал о термине и решил ознакомиться с паттернами вокруг него — вдруг я делаю что-то не так, или упустил какой-то интересный подход.
Vladimir
Много бойлерплейта, но в целом хорошо
Vladimir
Тестировать становится все очень просто
Anonymous
А ещё. Парится ли кто-нибудь о реализации приватных методов/свойств?
Vladimir
нет
Anonymous
Нормальная ли практика:
1. Большое количество методов в классе?
2. Вынос методов в отдельные файлы с последующим подключением к MyClass.prototype?
Дима
Без второго хотелось бы обойтись. Просто выделяй смежную, но отдельную сущность
Anonymous
Я бы не стал так делать. По мне - неудобно поддерживать, неявно.
Anonymous
+ допустим ты захочешь перейти на es6 классы, это дополнительное усложнение для перехода
Anonymous
Эм... Ничего сложного.
Дима
Нуу хз
Anonymous
class MyClass {}
MyClass.prototype.myMethod = ...
Дима
Неа
Anonymous
вопрос, а зачем так делать? Даже с точки зрения работы с кодом - чтобы посмотреть реализацию нужно все время скакать по файлам.
Anonymous
Это не ES6 классы
Anonymous
Anonymous
Эм... ?
Дима
И это и плохо
Anonymous
это может работать в зависимости от реализации траншпилера
Дима
Это не "переезд" тогда вообще)
Дима
Как реализовывал через прототипы, так и продолжаешь)
Anonymous
в голове вертится вопрос "а зачем так делать?"
Дима
++
Anonymous
А, ну, в общем, да.
Vladimir
Это работает, но это не повод
Anonymous
=)
Anonymous
Писать классы меньше, но больше сущностей?
Дима
Static методы
Anonymous
на TS ты тоже без объединения в файл переехать не сможет нормально, например
Anonymous
А что статик методы?
Anonymous
Фаулер завещал больше маленьких сущностей
Anonymous
=)
Дима
И больше сущностей, да, почему нет
Дима
Один метод на весь класс
Anonymous
class Foo { static staticMethod() {.. } private method() { Foo.staticMethod(); .. }
Anonymous
кстати никто не смотрел, статические методы дают прирост производительности?
Anonymous
я просто не смотрел как они траншпилятся в том же TS..
Дима
Дима
Естественно, если в каждом экземпляре по методу, то памяти будет есть больше
Anonymous
в каком случае будет в каждом экземпляре по методу?
Дима
Ну когда не static
Anonymous
Неа.
Anonymous
ну тогда же он берет по ссылке из прототипа всегда
Anonymous
Прототипы остаются прототипами.
Дима
А контекст?
Anonymous
Классы — это просто сахар же.
Anonymous
это задача JS уже
Anonymous
Да всё так же, как с прототипами.
Anonymous
или я что-то не знаю о JS? oO
Anonymous
По сути, механизм не поменялся.
Anonymous
Anonymous
давно не игрался с такими вещами но, var foo = function() { console.log(this) }; b = { a: 1, foo: foo }; b.foo()
Anonymous
вернет b
Anonymous
контекст будет всегда объекта от котого ф-я исполняется
Anonymous
без bind
Дима
Да
Anonymous
Anonymous
function Class1() {}
Class1.staticMethod = function() {};
Class1.prototype.method = function() {};
class Class2 {
static staticMethod() {}
method() {}
}
Anonymous
Одно и то же.
Дима
Кэп 😄
Vladimir
> @bigslycat
Одно и то же.
почти
Anonymous
В чём отличия?
Anonymous
вторая запись мне нравится больше определенно)