Ревью Кода Scala/SQL#
- Руководство по Ревью Кода Scala
- Метаописания и Структура Классов
- Конфигурация Модулей GSF
- Использование стандартных компонентов GSF
- Обработка Ошибок и Зависимости
- Требования к Структуре Scala-Кода
- Общие Принципы и Стиль Кода
- Безопасность и Надёжность
- Производительность
- Работа с API и ROP
- Работа с Базой Данных и SQL (Дополнения)
- Архитектура и Дизайн
- Работа с Атрибутами и Полями (Дополнения)
- Строки и JSON
- Специфика UI: AVI и Списочные Отображения
- Специфика UI: Кэширование, Логика и Настройки
- Отражение (Reflection)
- Специфика Модулей и Проектов
- Безопасность и Целостность Данных
- Соответствие Best Practices
- Критические ошибки
- Руководство по Ревью SQL-запросов
- Общие моменты и плохие практики
- Указывать только нужные столбцы
- Оптимизация условий фильтрации
- Соответствие типов
- Обработка альтернативных условий
- Безопасность отрицательных условий
- Коррелированные подзапросы
- Эффективная пагинация данных
- Эффективность выборки первых записей
- Контроль дублирования и сортировки
- Баланс сортировки и производительности
- Параметры вместо «врезки» значений в SQL
- Минимизируйте количество полей в GROUP BY
- Фильтруйте по индексируемым «бизнес-полям», а не по служебным/производным
- Корректность соединения по ключам
- Рекурсивные запросы: защита от циклов обязательна
- Запрещено выполнять SQL-запросы в методе checkworkability
- Запрещено выполнять SQL-запросы внутри вложенных циклов.
- Приведение типов в соответствие с типом колонки
- Использование многострочных комментариев
/* … */вместо--
- Индексы
- JOIN-стратегии
- Индексы на ключах JOIN
- Порядок JOIN
- Оптимизация порядка операций
- Работа с большими реестрами
- Коррелированный подзапрос с несколькими полями
- «Последняя запись»
- Массовый «top-1 по ключу»
- Валидация путей доступа (количество чтений)
- Партиционирование/секционирование
- Денормализация
- Фоновые задачи для больших JOIN
- Оптимизация больших запросов
- Анализ плана выполнения
- Тестирование и мониторинг
- Работа с ORM и OQuery
- Особенности selectStatement и @FlushBefore
- Общие моменты и плохие практики