Pull to refresh

Comments 8

Я правильно понял что вместо того чтобы использовать Map<String, CommandHandler> вы изобрели свой велосипед?
Думаю, что интерес не появится.
Лично я пишу, что-то подобное ради удовольствия, когда немного хочу отвлечься от основной работы.

Обычно среди «библиотек» есть 2 типа плохих методов: слишком сложные (чтобы в них разобраться) или сильно простые (которые проще написать самому). У вас второй случай.

Когда-то, лет 10 назад я написал свой набор методов на javascript, и думал, что теперь весь мир изменится. Я показывал их преподавателям, друзьям, сокурсникам со словами «вот, берите и используйте». И знаете что? Эта библиотека нафиг никому не была нужна.

Вы сильно переоценили свой «фреймворк». Эпитеты типа «никакой Магии» явно не для такого уровня статей. Посмотрите на свой творение более самокритично.

То, как организовали классы (архитектуру, концепцию) — это удобно вам, но может быть не удобно другим (мы все думаем немного по-разному). И одно дело, когда перед тобой признанный фреймворк, который знают все и под который подстроены другие фреймворки — это одно, здесь можно и потерпеть. И совсем другое дело, это ваша библиотека.
Вы сильно переоценили свой «фреймворк». Эпитеты типа «никакой Магии» явно не для такого уровня статей. Посмотрите на свой творение более самокритично.

Соглашусь с автором, такой подход (annotation processors) — это вполне нормальный вариант кодогенерации. И сказать "никакой магии" вполне нормально. Если хочется посмотреть, что такой с магией — загляните в kryo или что-нибудь ещё из использующих библиотеку asm и генерирующих байткод в рантайме (и да, here be dragons).


Вероятно, вы просто неподходящая аудитория для статей такого плана. Мне такие статьи на хабре куда более импонируют, чем тонны рассказов "как запустить mvn" и "как вписать свою первую зависимость в pom.xml" (с крайне глубокомысленными выводами типа не пишите addiction вместо dependency).

Спасибо вам, правда. Я бы и рад критики, помогла бы подумать, может что-то поменять, доработать, улучшить. Но вот читаю такие комментарии и думаю — эти люди вообще не читали статью? или может читали как то поверхностно? или я просто суть не могу донести? Но пока мне ваша версия с неподходящей аудиторией нравится больше)

Пока не заглянул в dependency:tree думал вам написать о разделении рантайм части и annotation processor'а.


Почему вы, кстати, не опубликовали его в maven central, но только в jcenter? Bintray, вроде, позволяет публиковать и в central (по крайней мере, они рекламируют эту возможность).


Также неплохо было бы добавить в документацию про использование с maven'ом:


<dependency>
  <groupId>org.brooth.jeta</groupId>
  <artifactId>jeta</artifactId>
  <version>2.3</version>
</dependency>
<dependency>
  <groupId>org.brooth.jeta</groupId>
  <artifactId>jeta-apt</artifactId>
  <version>2.3</version>
  <scope>provided</scope>
</dependency>

У maven'а аудитория будет пошире (в том числе среди тех, кто им не пользуется, но понимает).


В общем, выглядит интересно. Может попробую для плагинной архитектуры в одном из проектов.

С maven какая то странная бюрократия — нужно создать тикет в jira, описать библиотеку, они подумают, примут. Не то чтобы для меня это критично, просто сейчас Jeta развивается только на моих собственных проектах и jcenter меня пока устраивает. Если будет интерес со стороны сообщества и потребность в maven, тогда я заморочусь.

Не увидел не в прошлом посте, ни в этом, ни на сайте ответа: Jeta умеет как lombok генерировать «геттеры/сеттеры» из коробки?
Не совсем понятно зачем так все усложнять?
Я подобное делал с помощью спринга.
Помечаем Ваши команды не аннотацией Command, а
@Component("greet")
public class GreetingCommand implements CommandHandler {

    @Override
    public void handle() {
        System.out.print("Hi! How are you?");
    }
}
и инжектим все это куда-нибудь.
public class CommandProcessor {

    @Autowired
    private Map<String, CommandHandler> handlers = new HashMap<>();
}

Можно и новую аннотацию сделать. Вариантов куча.
В своих проектах использую lombok — рад, как слон.
Sign up to leave a comment.

Articles