История изменений
Исправление
stevejobs,
(текущая версия)
:
Ходил. Вот тебе версия без статических методов:
class A {
@Inject Objects o;
@Test
public void asd() {
B b = new B();
assertEquals(o.hash(b), 123);
}
}
Общее правило простое: все синглтоны, фактори, статики и прочие зависимости нужно реализовывать через (заменять на) Dependency Injection, где это хоть сколько-то возможно (не будет ударом по перфомансу). Написанный таким образом код можно удобно метапрограммировать в динамике. Если хит по перфомансу, то так и быть, погружаемся по уши в говны.
Но мне кажется, что такой синтаксис очень неудобный. Хотелось бы нечто вроде:
class A {
@Test
public void asd() {
B b = new B();
assertEquals(@Objects.hash(b), 123);
}
}
Чтобы @-референсы сразу запускали динамический поиск по implicit-символам. Заодним чтобы были implicit methods, implicit parameters, implicit classes, итп. Может даже implicit macros чтобы писать DSLи.
Исправление
stevejobs,
:
Ходил. Вот тебе версия без статических методов:
class A {
@Inject Objects o;
@Test
public void asd() {
B b = new B();
assertEquals(o.hash(b), 123);
}
}
Общее правило простое: все синглтоны, фактори, статики и прочие зависимости нужно реализовывать через (заменять на) Dependency Injection, где это хоть сколько-то возможно (не будет ударом по перфомансу). Написанный таким образом код можно удобно метапрограммировать в динамике. Если хит по перфомансу, то так и быть, погружаемся по уши в говны.
Исходная версия
stevejobs,
:
Ходил. Вот тебе версия без статических методов:
class A {
@Inject Objects o;
@Test
public void asd() {
B b = new B();
assertEquals(o.hash(b), 123);
}
}
Общее правило простое: все синглтоны, фактори, статики и прочие зависимости нужно реализовывать через (заменять на) Dependency Injection, где это хоть сколько-то возможно (не будет ударом по перфомансу). Написанный таким образом код можно удобно метапрограммировать в динамике. Если хит по перфомансу, то так и быть, погружаемся по уши в говны Java Memory Model итп