??????????? ???????? ? ?????, ??? ? ???? ???????

 
 
 
Сообщения:35
Предлагаю в этот тред писать свои мыли по поводу рефакторинга всего, что связано с плагинами по принципу "что не нравится - как улучшить" дабы не потерять дельные мысли. А в конце работы над QA плагином на основе предложений можно создать одну или несколько задач по рефакторингу.

Первые пять копеек от меня:
1. Плагины перегружаются и переконфигурируются слишком часто из-за этого будет проседать производительность.
Предложене: создать сервлет-фильтр, который будет подгружать плагины один раз за запрос и куда-нибудь сохранять список активных плагинов (например, в атрибут запроса)
2. Класс, который определяет всякие ссылки для топиков (EntityToDtoConverter) слишком общий. Его нужно разбить на что непосредственно конвертер и что-то типа UrlFactory. Тогда UrlFactory можно будет использовать в контроллерах и email сервисах для определения ссылок без преобразования Topic в TopicDto
3. На данный момент мы создаём новый объект VelocityEngine при каждом запросе к контроллеру плагина. Это не есть хорошо. Нужно сделать VelocityEngine полем класса QuestionsAndAnswersController и инициализировать один раз при инициализации контроллера.
4. У нас слишком много синглтонов.
Тут у меня есть 2 варианта:
  • Дёргать классы сервисов из application-контекста
  • Создать класс типа ServiceHolder, который будет хранить в себе все бины сервисов используемые в плагинах, передавать этот ServiceHolder в конструктор контроллера при его инициализации и уже там инициализировать нужные сервисы.

Отказ от синглтонов должен упростить тестирование контроллеров.

Замечания приветствуются.
Изменен:22 янв 2015 10:06
 
 
Сообщения:365
mixas:
4. У нас слишком много синглтонов.
Тут у меня есть 2 варианта:

Дёргать классы сервисов из application-контекста
Создать класс типа ServiceHolder, который будет хранить в себе все бины сервисов используемые в плагинах, передавать этот ServiceHolder в конструктор контроллера при его инициализации и уже там инициализировать нужные сервисы.
Есть еще Spring Modules, на них бы взглянуть в первую очередь. Возможно все-таки OSGI для нас будет оправдан, так что предлагаю этот вопрос исследовать по-серьезней.
 
 
Сообщения:35
5. Javascript-логика показа промта комментрования зависит от вёрстки, т.е. там используются jquery методы parents() и next() для определения что показывать, а что прятать. Это, имхо, нужно завязать на id постов чтобы при изменении местоположения промта не приходилось переписывать js.
Это можно даже дописать в историю про создание комментов.
 
 
Сообщения:365
А это разве непосредственно к плагинам относится как-то?
 
 
Сообщения:35
Ну да, промт то этот в плагине вопросов
 
 
Сообщения:365
Я о том что к механизму плагинов это не относится, скорей - к реализации конкретного плагина. Ведь и в core jcommune это было бы такой же проблемой.
 
Модераторы:katctapobepІраїдаJulia AtlyginaJulik21Julikdsafjifb
Сейчас эту тему просматривают:Нет