LINUX.ORG.RU

История изменений

Исправление 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 итп