Конкатенация строк для SQL-запросов является частым источником проблем. Автор выступает за использование API построителя SQL вместо "сырых" SQL-строк. Этот построитель создает синтаксическое дерево, которое может быть преобразовано в SQL при необходимости, избегая проблем прямой манипуляции строками. Хотя ORM также являются вариантом, автор рассматривает их как "протекающие абстракции". Команда использовала Java и следовала правилу использовать построитель, а не SQL-строки. Однако для построения они использовали StringBuilder, который технически подходит под определение построителя. Этот подход с StringBuilder был лишь конкатенацией строк с дополнительными шагами. Пример кода демонстрирует использование StringBuilder для создания запроса, но результирующая SQL-строка была принципиально некорректной и неполной для предполагаемой цели. Тот факт, что этот нерабочий код работал в продакшене без немедленного обнаружения, вызывает серьезную озабоченность. Это подразумевает, что ошибки были проигнорированы без уведомления, или ошибочный вывод был недостаточно критичен, чтобы вызвать тревогу. Автор выделяет это как момент "WTF", подчеркивая отсутствие надежной обработки ошибок или проверки.
StringBuilder, который технически подходит под определение построителя. Этот подход сStringBuilderбыл лишь конкатенацией строк с дополнительными шагами. Пример кода демонстрирует использованиеStringBuilderдля создания запроса, но результирующая SQL-строка была принципиально некорректной и неполной для предполагаемой цели. Тот факт, что этот нерабочий код работал в продакшене без немедленного обнаружения, вызывает серьезную озабоченность. Это подразумевает, что ошибки были проигнорированы без уведомления, или ошибочный вывод был недостаточно критичен, чтобы вызвать тревогу. Автор выделяет это как момент "WTF", подчеркивая отсутствие надежной обработки ошибок или проверки.