Gymterview
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). Никогда не загружайте все данные в память — используйте пагинацию.