Оптимизация и ревью кода Scala#
- Ревью Scala-кода
- Производительность и качество кода
- Метаданные и структура классов
- Конфигурация модулей
- Использование стандартных компонентов GSF
- Ошибки, исключения и транзакции
- Структура Scala-кода
- Безопасность и надежность
- Работа с API и ROP
- Работа с БД и SQL
- Архитектура и дизайн
- Работа с атрибутами и полями
- Строки и JSON
- UI, AVI и списочные отображения
- Безопасное получение значений в списках
- Поля с большим объемом данных
- Корректная активация и деактивация операций
- Управление доступностью кнопок в списках
- Структурирование настроек выборки
- Переходы состояний
- Синхронизация данных с интерфейсом
- Кастомные выборки
- Идентификатор в результатах выборки
- Предпочтительные способы получения данных
- Структура данных при переопределении
- Отражение и ввод-вывод
- Модульные и проектные особенности
- Блокирующие замечания
- Оптимизация Scala-кода
- View и withFilter для оптимизации коллекций
- Объединение условий фильтрации
- Отложенные вычисления с lazy val
- Выбор коллекции по сложности поиска
- Защита циклов от зацикливания
- Встроенные методы вместо эмуляции
- ArrayBuffer вместо ListBuffer
- exists вместо filter для проверки
- isEmpty вместо length для пустоты
- getVar вместо запросов к БД в CWA
- Избегание copyAro для экономии памяти
- Разделение логики Avi и Api
- Форматирование длинных выражений
- Общие trait для повторного использования
- Библиотеки общих методов для выборок
- Экстракторы вместо полей Tuple
- Безопасные методы коллекций с Option
- Строковая интерполяция вместо конкатенации
- StringBuilder для сложных строк
- Option для обработки null-значений
- Запросы вне вложенных циклов
- Параллельные вычисления для независимых задач
- Оптимизация работы с данными и кэшем
- Применение refreshByParent и refreshByKey
- Применение Session.commit, Session.commitWork, flush и flush(true)
- Загрузка множества объектов
- Предварительная прогрузку данных в кэш через batchIn и queryKeys
- Массовая обработка объектов через Btk_BulkProcessPkg().chunkedQuery
- При массовой регистрации объектов используйте Btk_BulkProcessPkg().findObjects