middle
Какие есть best practices при разработке для Jira?
Best practices при разработке для Jira — набор рекомендаций по производительности, безопасности, UX и обратной совместимости, применимых к обеим платформам.
Производительность
Пример
// ПЛОХО — загрузка всех задач проекта в память
Collection<Long> allIssueIds = issueManager.getIssueIdsForProject(project.getId());
// Может быть 100K+ задач!
// ХОРОШО — пагинация + ленивая загрузка
String jql = "project = " + projectKey + " ORDER BY created DESC";
Query query = jqlQueryParser.parseQuery(jql);
PagerFilter pager = new PagerFilter(page * pageSize, pageSize);
SearchResults results = searchService.search(user, query, pager);
Безопасность
Пример
// ПЛОХО — SQL injection в AO
ao.find(TaskConfig.class,
Query.select().where("PROJECT_KEY = '" + projectKey + "'"));
// ХОРОШО — параметризованный запрос
ao.find(TaskConfig.class,
Query.select().where("PROJECT_KEY = ?", projectKey));
// В Velocity шаблонах: $!{htmlUtil.htmlEncode($userInput)}
Конфигурация плагина (DC)
Пример
@Named
public class PluginConfigService {
private static final String PLUGIN_KEY = "com.example.my-plugin";
private final PluginSettingsFactory settingsFactory;
@Inject
public PluginConfigService(
@ComponentImport PluginSettingsFactory settingsFactory) {
this.settingsFactory = settingsFactory;
}
public void setSetting(String key, String value) {
PluginSettings settings = settingsFactory.createGlobalSettings();
settings.put(PLUGIN_KEY + "." + key, value);
}
public String getSetting(String key) {
PluginSettings settings = settingsFactory.createGlobalSettings();
return (String) settings.get(PLUGIN_KEY + "." + key);
}
}
Частые ошибки
- Пропуск валидации ввода — XSS, SQL injection, path traversal
- Отсутствие error handling — пользователь видит stack trace вместо понятного сообщения
- Блокирование потоков UI — тяжёлые операции должны быть асинхронными с progress bar
- Жёсткая привязка к конкретной версии Jira API — не работает после обновления
Как используется в 2026
- Atlassian Design System (ADS) — единая система дизайна для DC и Cloud
- Observability (Prometheus, OpenTelemetry) — must-have для production плагинов
- Feature flags — безопасный rollout новых функций плагина
- Автоматизированное тестирование на матрице версий Jira (LTS versions)
На собеседовании: структурируйте ответ по категориям: производительность (пагинация, кэширование), безопасность (параметризованные запросы, XSS), UX (AUI для DC, Atlaskit для Cloud), обратная совместимость (upgrade tasks). Никогда не загружайте все данные в память — используйте пагинацию.