JPatterns: Java аннотации для шаблонов проектирования


Шаблоны проектирования кодируются в Java код как придётся. Их названия даже включаются в имена классов или записаны в Javadoc’и. К несчастью невозможно точно определить шаблон только основываясь на структуре класса без знаний намерений автора кода.

Помочь решить эту проблему может библиотека JPatterns созданная Michael Hunger и Heinz Kabutz.

JPatterns это коллекция аннотаций которе делают простым взаимодействие использования шаблонов проектирования с вашим кодом для ваших разработчиков и вами самими в будущем. Библиотека следует принципу KISS используя резонные умолчания для атрибутов аннотации. Так, если вы пишете Компоновщик (англ. Composite pattern), вы можете просто указать:

@CompositePattern
public abstract class Contact {
  public abstract void sendMail(String msg);
  public void add(Contact contact) {}
  public void remove(Contact contact) {}
}

Или, если хотите, вы можете также указать точнее, например:

@CompositePattern(role = CompositeRole.COMPONENT,
 participants = {DistributionList.class, Person.class})
public abstract class Contact {
  public abstract void sendMail(String msg);
  public void add(Contact contact) {}
  public void remove(Contact contact) {}
}

JavaDoc проекта впечатляет: реализованы аннотации для GoF, JEE и PLoPD.

Этот проект поможет улучшить качество кода относительно малой кровью.

Например недавно я написал плагин-инспекцию для Idea который проверяет корректность реализации шаблона Одиночка (англ. Singleton pattern). Проверяется в частности что конструктор объявлен приватным. И мне пришлось определять Singleton чисто по наличию метода getInstance(), т.е. практически наугад. Если бы классы-одиночки были бы отмечены аннотацией @SingletonPattern, то жизнь стала бы ярче.

Кстати в Groovy уже давно есть две стандартные аннотации для шаблонов проектирования: @Singleton и
@Immutable. А в Идее даже есть инспекции которые проверяют классы по этом аннотациям.

Репозиторий проекта находится на GitHub и ждёт героев готовых помочь проекту 😉

Ещё этими же авторами была создана библиотека аннотаций качества кода AtCode. Не очень впечатляет хотя тоже полезная.

Ну и в заключение хочу напомнить про прекрасную коллекцию аннотаций от Google про которую писали в первоапрельской статье на Хабре.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s