Статьи

ColdFusion Builder 2: улучшение возможностей программирования

Как пользователь первого выпуска Adobe ColdFusion Builder, интегрированной среды разработки на основе Eclipse для разработки ColdFusion, я быстро загрузил бета-версию Builder 2, когда она была выпущена в начале марта на веб-сайте Adobe Labs . Пользуясь им ежедневно в течение почти двух месяцев, я могу сказать, что, хотя новые функции в Builder 2 являются скорее эволюционными, чем революционными, они значительно повышают полезность IDE.

Цель любой достойной IDE — упростить процесс написания реального кода, поэтому неудивительно, что большинство улучшений в Builder 2 можно найти в редакторе кода. Главным среди этих улучшений является более интеллектуальная функция Code Assist. В то время как первая версия Builder предоставляла некоторые подсказки с предложениями функций и атрибутов, когда я печатал свой код, я имел тенденцию игнорировать его, потому что руководство, которое он предоставлял, было несколько ограниченным, и я чувствовал, что оно встало у меня на пути. Code Assist в Builder 2 дает мне больше контроля над предлагаемыми предложениями и может перечислять соответствующие дополнительные атрибуты для данного тега или функции на основе того, что я кодировал до сих пор.

Вот пример: тег <cffile> на языке разметки ColdFusion (CFML) может использоваться для выполнения различных видов действий с файлами в зависимости от значения атрибута «action» в теге. В Builder 2, если я введу «<cffile» в редакторе, мне будет показан список возможных атрибутов с этим тегом. Атрибут «action» для <cffile> всегда является обязательным, поэтому он указан вверху с галочкой рядом с ним:

Выбор «действия» из списка приведет к тому, что Builder отобразит список возможных значений этого атрибута:

Если я выберу «write» в качестве значения «action», Builder автоматически добавит два дополнительных обязательных атрибута, необходимых для выполнения операции записи в файл:

Но если бы я выбрал другое значение для «действия», например «загрузить», Builder просто добавит еще один обязательный атрибут для операции загрузки:

Я также могу вывести список необязательных атрибутов в любое время, нажав Control-пробел на моей клавиатуре.

Если я пишу функцию, codeAssist также может запросить у меня аргументы, необходимые для этой функции. Поэтому, если бы я писал вызов функции ListFind в cfscript (можно написать код ColdFusion либо в CFML на основе тегов, либо в стиле сценария cfscript в зависимости от своих предпочтений), я мог бы ввести имя функции, а затем нажать Control-Spacebar на моей клавиатуре. и получить приглашение указать, какую переменную я хочу использовать для первого аргумента (в данном случае аргумент «список»):

Обратите внимание, что список возможных значений аргументов включает в себя две строковые переменные, определенные в моем коде, а также стандартные области действия переменных, используемые в ColdFusion («application», «client» и т. Д.), Но пропускает переменную «myInteger». Это потому, что Builder оценивает переменную myInteger и знает, что она содержит целочисленное значение и, следовательно, будет неверным выбором для первого аргумента ListFind.

Еще одна особенность Builder 2, которую я нахожу, помогает мне писать свой код — совершенно новые настройки форматирования кода. Я могу изменить способ, которым Builder форматирует мой код во время ввода, открыв глобальное окно настроек в Eclipse, а затем щелкнув ColdFusion -> Profiles -> Editor -> Formatter, чтобы открыть окно Formatter:

Форматтер дает мне много возможностей для настройки того, как будет выглядеть мой код. Несколько примеров:

  • Я могу указать, все ли теги CFML, добавляемые Code Assist, являются строчными или прописными, и какие теги автоматически получают закрывающую косую черту.
  • Я могу указать, какие теги запускают автоматический отступ при переходе на следующую строку, и насколько большим должен быть каждый отступ.
  • Я могу установить, когда и где добавляются пробелы и пустые строки.
  • Если я пишу в cfscript, я могу указать, хочу ли я, чтобы начальная фигурная скобка блока кода появлялась в конце текущей строки или в начале следующей строки (распространенная дискуссия среди программистов).

Построение моего кода в формате Builder для меня в стиле, который я предпочитаю, — большая помощь: он экономит много нажатий клавиш и делает мой код похожим. И если по какой-то причине мой код заканчивается неправильным форматированием (что может произойти, если я вставлю блок кода из другого места), я могу выбрать указанный код, щелкнуть по нему правой кнопкой мыши и выбрать «Форматировать» в контекстном меню, и Builder исправит форматирование кода.

Еще одна новая функция редактора, которая мне нравится в Builder 2, — это возможность перемещаться, выбирать и скрывать блоки кода. Большая часть кода, который я пишу (и это верно для большего количества программистов), организована в логические блоки: условные операторы, циклы, функции и т. Д. В Builder 2, если мой курсор находится внутри такого блока и в начале или конце текущая строка кода, нажав Control-Alt-M (Windows) или Command-Alt-M (Macintosh), выберет / выделит конечный тег содержащего блока кода, а при повторном нажатии этой комбинации клавиш снова будет выбран начальный тег:

Используя то же положение курсора, но нажимая Control-Alt-B (Windows) или Command-Alt-B (Macintosh), вы выделите весь блок кода:

Оба этих сочетания клавиш пригодятся, когда я имею дело с вложенными блоками кода, которые занимают более одного экрана, и я не могу сказать, на какой блок кода я смотрю. С другой стороны, если я работаю с большим файлом, в котором интересующие меня блоки кода разделены сотнями или около того строками кода, я могу уменьшить объем прокрутки, который нужно выполнить, свернув или сложив неактуальный код. Свертывание кода присутствовало в первой версии Builder, но оно не сохраняло свернутое состояние кода при закрытии файла: это делает Builder 2.

Самое большое улучшение без редактора в Builder 2 — это функция поиска, добавленная Adobe в IDE. Инструменты поиска в Builder 1 были инструментами поиска по умолчанию на платформе Eclipse: простое диалоговое окно «Найти / Заменить» для поиска текста или регулярных выражений в текущем файле или более глобальный диалог поиска текста / выражений, вызванный нажатием Control- H в виде навигатора. Опция глобального поиска Eclipse по-прежнему доступна в Builder 2, но Adobe создала свое собственное окно поиска для обработки как текущего, так и многофайлового поиска:

Это новое окно поиска, которое я могу вызвать, нажав Control-F (Windows) или Command-F (Macintosh) в любом месте окна редактора, смоделировано после диалогового окна поиска в Adobe Dreamweaver, но с дополнительными функциями. Раскрывающийся список Область действия дает мне практически полный контроль над областью моего поиска. Я могу ограничить поиск локальным документом или выполнить поиск по всем открытым документам. Если я выберу опцию «Проекты» или «Рабочий набор», я могу выбрать один или несколько проектов / рабочих наборов Eclipse для поиска, а также тип файлов для поиска. Я даже могу искать файлы вне среды Eclipse, включая файлы, расположенные на FTP-сервере (хотя я не пробовал эту опцию).

По умолчанию в окне поиска выполняется поиск одной строки текста, но если я ищу определенный фрагмент кода, занимающий несколько строк, я могу выполнить многострочный поиск:

У меня также есть возможность выполнять поиск на основе тегов, а не текстовый поиск. Это действительно мощная функция в определенных обстоятельствах. Скажем, у меня есть несколько тегов <cfldap> в моем проекте, которые запрашивают мой сервер LDAP. Каждый из тегов подключается к одному и тому же серверу LDAP, но определенные параметры отличаются для каждого тега, как два примера ниже:

<cfldap action="query"
	name="garyQueryObject"
	server="myLdapServer.com"
	username="East12"
	password="Secret"
	filter="(firstName=Gary)"
	attributes="firstName,lastName,email">
	
<cfldap action="query"
	name="paulQueryObject"
	username="West12"
	password="NotAsSecret"
	server="myLdapServer.com"
	filter="(firstName=Paul)"
	attributes="firstName,lastName,email">
	

Скажем, все изменилось, и мой LDAP-сервер теперь имеет адрес «.org» вместо «.com», поэтому эти теги необходимо обновить. С помощью новой функции поиска я могу определить поиск на основе тегов, чтобы найти все теги, для которых атрибут «server» установлен как «myLdapServer.com», и изменить только имя сервера:

Все эти дополнения и улучшения (и некоторые другие, о которых я не упомянул) помогли мне быстрее написать более чистый код и устранить некоторые мелкие отвлекающие факторы (аргумент забытой функции, дополнительная типизация, чтобы код выглядел организованно). ), которые нарушают поток моего кодирования. Для меня этого достаточно, чтобы сделать ColdFusion Builder 2 достойным улучшением по сравнению с оригинальной версией.