Аудит UI-форм бізнес-процесів

FR-01. Великі форми

Критичність: Висока
Опис

Робити форми якомога простішими та короткими

Вплив
  • Зниження продуктивності при рендерінгу форми в браузері

  • Ускладнення внесення змін до форми розробниками регламенту

  • Погіршення користувацького досвіду при заповненні або перегляді форми

  • Збільшення ймовірність виникнення системної помилки у користувача при роботі з формою (наприклад, втрата заповнених даних через закінчення сесії користувача)

Рекомендації
  • При внесенні даних, розбивати форму на декілька окремих і робити збір даних поетапно

  • При перегляді даних:

    • Показувати обмежений набір даних за замовчуванням

    • Для перегляду детальної інформації використовувати звіти чи витяги

Детальніше про кращі практики по розробці WEB форм можна ознайомитись за посиланням

FR-02. Lazy load для компоненту Select

Критичність: середня
Опис

При наявності великої кількості компонентів Select на формі, використовувати lazy load для підвантаження даних по URL. За замовчуванням компонент Select заздалегідь дістає дані (eager load) по URL в наступних випадках:

  • При первинному рендерінгу форми

  • При зміні в пов’язаному компоненті

  • При оновленні користувацького токена (системна поведінка, яка відбувається безумовно незалежно від дій користувача)

Вплив
  • Додаткове навантаження на сервери та мережу

  • Збільшення часу рендерінгу форми

  • На момент написання документа в деяких випадках при значній кількості компонентів Select у користувача може виникати системна помилка з оновленням авторизаційного токена

Рекомендації
  • Уникати створення великих форм (див. FR-01. Великі форми)

  • Використовувати lazy load для компонентів Select якщо їх кількість на формі достатньо велика (понад 5)

  • Використовувати eager load у випадках, коли це дійсно може покращити користувацький досвід. Наприклад, для першого компоненту Select на формі, щоб у користувача відразу після рендерінгу форми були необхідні дані для вибору

FR-03. Javascript логіка в компонентах форми

Критичність: висока
Опис

Конструктор форм дозволяє втілити значну кількість обробки даних та валідацій за допомогою вбудованих можливостей. Додатково, існує можливість для певного переліку налаштувань (validation, conditional, custom default value) реалізувати індивідуальну логіку на javascript. Це дозволяє з одного боку гнучко налаштовувати форму, однак, складна та об’ємна логіка створює приховану складність, яка може призвести до проблем, що важко відлагоджуються або непередбачуваної поведінки форми.

Вплив

Підтримка та розвиток складної javascript логіки на рівні моделювання форми стають крайно незручними. Це може призвести до додаткового часу, витраченого на відлагодження, а також збільшити ймовірність помилок. Особливо це стає актуальним, коли команда розробників змінюється або проєкт передається на підтримку.

Рекомендації
  • Контроль обсягу використання Javascript. Обмежувати складність javascript логіки в формах. Намагатися зберігати логіку якомога простішою та більш прямолінійною.

  • Використовувати вбудовані можливості конструктора форм для валідації та обробки даних

  • Уникати побічних ефектів в місцях використання. Кожна вставка javascript логіки має єдину відповідальність (валідація, умовне відображення, обробка даних тощо) та не має впливати на інші частини форми

FR-04. Зовнішні АПІ сервіси в компоненті Select

Критичність

,Опис При інтеграції з зовнішніми АПІ сервісами враховувати чи підтримує сервіс cookie для автентифікації, що вплине на налаштування відповідного компоненту select (Add authentication cookies for cross-site requests)

FR-05. Компонент карти. Інтеграція з підкладинками

Опис

При необхідності інтеграції з кастомними підкладинками на картах, враховувати CORS політики, які додатково повинні бути налаштовані на API-Gateway MDTUDDM-23166

FR-06. Вкладеність компонентів зі складними зв’язками

FR-07. Експериментальні компоненти

FR-08. Ліміти на критеріях пошуку для селектів

FR-09. Математичні обчислення

FR-10. Компонент Number

FR-11. Маска на текст філді

FR-12. Edit grid. Велика кількість записів

FR-13. Функції без сайд ефектів в компонентах

FR-14. Ручні зміни в дефінішенах компонентів форми