SQL Complete – помощник программиста баз данныхАвтор: Иван Афанасьев Опубликовано: 17.11.2011 Источник: SoftKey.info 
Продукты Microsoft издавна славятся своим дружественным интерфейсом. По крайней мере, они к этому стремятся. И это относится не только к операционной системе или офисному пакету, но и к средам разработки приложений. В первую очередь это, конечно, Visual Studio. Со времен изобретения, сами знаете кем, языка Basic программирование на нем становится все проще, а всевозможные подсказки, автозавершение кода, автоматическое форматирование и другие помощники вообще позволяют не думать о синтаксисе языка, параметрах, методах и свойствах объектов. Но по странному стечению обстоятельств в другом, не менее мощном продукте Microsoft SQL Server Management Studio подобные удобства напрочь отсутствуют. dbForge SQL Complete исправит это недоразумение.
Но есть же IntelliSence, скажете вы. Возможно, для кого-то этот инструмент и удобен, но мне так и не удалось его настроить. Он постоянно находил не то, и использовать его в автоматическом режиме абсолютно неудобно. Максимум для чего он пригодился – это получение списка полей таблицы при условии использования алиаса. И то только по запросу с помощью горячих клавиш. Новые объекты он "впитывает" очень неохотно и вообще живет своей жизнью. Вторая проблема, которая никак не решена в Management Studio, – автоформатирование кода. Чистоплотный программист знает, как важно форматировать код. Иначе он превратится в кашу и те, кто будет его поддерживать в дальнейшем, своими проклятиями испортят карму автора. Поэтому в большинстве сред разработки есть возможность автоматически форматировать код, зачастую сразу при вводе.
DbForge SQL Complete, разработанный компанией Devart (ранее известной как Core Lab), встраивается непосредственно в среду Management Studio и начинает активно помогать писать код запросов. SQL Complete предлагает три основные услуги: подсказки по объектам сервера и элементам T-SQL, автозавершение кода автоматически или по предустановленным правилам, форматирование кода.
Рассмотрим их поподробнее. Сразу скажу, что интерфейс продукта английский и многие термины, используемые в программировании, довольно сложно перевести на русский или найти адекватный краткий аналог. Но я думаю, что программисты разберутся и поймут, о чем речь.
Подсказки - suggestions
Подсказки при написании кода показываются в зависимости от контекста. То есть при наборе языковой конструкции в разных местах строки SQL Complete предлагает либо список таблиц, либо список полей таблицы, либо ключевые слова, либо подсказку по параметрам функции или процедуры. Кроме того, если IntellSense предлагает список полей строго при вводе точки после имени таблицы или алиаса, то SQL Complete сам понимает, в какой момент вам нужен список полей и показывает его, причем именно тот список, который допустим в данном конкретном месте. А имя алиаса дописывается автоматически в зависимости от выбранного поля. Кстати, сам алиас назначается таблице автоматически по первым буквам имени таблицы, причем с учетом составных имен, представляющих смысл. К примеру, для таблицы tUsersMail алиас будет "um".
 | | Подсказка при вводе |
В списке подсказок также сразу видны подобности о выбираемом объекте – тип данных, перечень параметров, список полей и так далее. Помимо автоматического вызова списка его можно получить принудительно по стандартному для IntelliSense сочетанию клавиш Ctrl+J. Если вызвать подсказку вне языковой конструкции, то будет показан список возможных к применению в данной ситуации операторов и список так называемых snippets – предустановленных сокращений, при вводе которых автоматически формируется готовый кусок кода по установленным правилам.
 | | Подсказка при наведении курсора |
Подсказки появляются и при наведении мыши на имена таблицы, полей, операторов, функций и так далее.
Автозавершение кода - snippets
Сокращения позволяют быстро вводить типовые, часто используемые, конструкции кода. Такие как, например, "select * from…". В программе есть несколько готовых сокращений, но вы можете создать и свои. Автозавершение по сокращению срабатывает по клавише табулятора после ввода комбинации букв, которые есть в списке доступных сокращений. А также при выборе сокращения из списка подсказок. Интересная возможность в сокращениях – литералы. Это что-то типа обязательных параметров. Вы не только создаете некую готовую языковую конструкцию, но и можете указать, в каком месте требуется ручной ввод необходимых операторов или значений. То есть, например, в рассматриваемом выше примере после оператора FROM всегда требуется ввести имя таблицы.
 | | Предложение автозавершения |
 | | После нажатия TAB |
Помимо сокращений-snippets, как уже было описано выше, SQL Complete автоматически подставляет имена алиасов таблиц, схемы, базы данных и так далее в зависимости от настроек.
 | | Настройки сокращений |
Форматирование кода
Отформатированный код прежде всего удобнее читать. Большие запросы на несколько страниц, процедуры в сотни строк без форматирования разбирать очень сложно, несмотря на подсветку синтаксиса. Даже элементарные переносы элементов конструкции на новую строку уже делают код понятнее. Эта область возможностей в SQL Complete наиболее гибкая. И это неудивительно – у каждого программиста свои привычки, в различных софтверных компаниях и ИТ-подразделениях свои стандарты.
 | | Код до форматирования |
 | | Код после форматирования |
Форматирование включает в себя изменение регистра элементов кода, перенос на новую строку, отступы, а также их комбинацию (перенести на новую строку или перенести и сделать отступ). Различное форматирование может быть применено к разным операторам и языковым конструкциям, а также к их параметрам (например, конструкция select - все с новой строки, а перечень полей подряд, а конструкция insert – все в одну строку, но поля "в столбик").
Для каждого вида настроек визуально показывается пример, как это будет выглядеть "до и после", то есть с включенной опцией и с выключенной, что сильно помогает, так как иначе разобраться было бы невозможно.
 | | Настройки форматирования |
Если говорить о корпоративных стандартах и традициях в рамках одного коллектива разработчиков, то в SQL Complete есть инструмент импорта и экспорта всех настроек. С помощью него правила форматирования и автозавершения можно распространить по всем рабочим станциям. В итоге код любого члена команды будет построен по одному общему шаблону и выстроен по единой корпоративной линейке.
Другие возможности
Кроме всего описанного выше в SQL Complete есть и еще несколько удобных инструментов. В первую очередь это поиск объекта по его имени. То, что называется Go To Definition. Для переменных это поиск места их объявления в коде, для таблиц, полей, функций, процедур и так далее – нахождение в иерархическом списке объектов Management Studio.
Интересная, но, на мой взгляд, бесполезная функция выполнения текущей строки кода. Это то же самое, что Management Studio позволяет сделать, если выделить одну или несколько строк и нажать F5.
 | | Иерархия кода |
Инструмент просмотра структуры документа, то есть кода T-SQL, показывает в отдельной панели разобранные по иерархии все конструкции, вложенные друг в друга. Выбор элемента в иерархии автоматически позиционирует курсор в соответствующем месте кода, облегчая навигацию по объемным многоструктурным текстам.
Заключение
SQL Complete делает то, чего действительно не хватает в Management Studio. Среди подобных аналогов это средство, на мой взгляд, наиболее удобное и адекватное. Во многом благодаря гибким настройкам. Помимо Management Studio есть возможность встраивания в Visual Studio. Система активно развивается, в том числе и при помощи благодарных пользователей. Вы можете предложить недостающую функцию или проголосовать за предложения других.
Есть и бесплатная версия, но довольно сильно урезанная. Так что для профессионалов, конечно, лучший выбор – это полный вариант. Тем более что у Devart действует программа скидок от 10 до 100%, но вы должны выполнить некоторые условия, чтобы их получить.
Из отрицательных впечатлений могу заметить периодические, но не частые сообщения о критических ошибках SQL Complete с предложением закрыть и отправить отчет. Впрочем, если отказаться, то система продолжает работать дальше без каких-либо изменений в поведении. Возможно, в моем случае это связано в конфликте с другими надстройками в Management Studio.
А так программа весьма полезная и удобная. В своей работе, когда я плотно занялся T-SQL, первым делом пошел искать решение проблемы отсутствия штатных средств форматирования. Проблема обострилась при работе в большой команде, да и собственный код, написанный в одну строку, через месяц уже понять невозможно. Когда в различных средах разработки стали появляться системы подсказок, это также быстро было принято как удобное и полезное средство, ускоряющее процесс программирования. SQL Complete, на мой взгляд, на текущий момент наиболее оптимальное решение для работы с MS SQL Management Studio.
|