других областях, например Web-дизайне).

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

Ясно, что такая переработка существующего исходного текста требует соответствующего инструментария. И большинство современных сред разработки (IDE) обзавелось соответствующими функциями. В CodeGear RAD Studio 2007 (см. CodeGear Studio 2007: интегрированный комплект') реализовано большинство типовых операций, относящихся к рефакторингу. В качестве примера мы использовали небольшую программу, имитирующую браузер (несколько модифицированная разработка Александра Лозовюка). Пример вполне компактный (по сути, он сводится к управлению ActiveX-компонентом браузера Internet Explorer), но для иллюстративных целей вполне пригодный.

Извлечение метода. Например, попробуем трансформировать метод, загружающий в браузер содержимое локального файла (WebBrowser1.Navigate). Изначально он вызывался из процедуры TForm1.Button2Click нажатием соответствующей кнопки. Собственно все, что требуется, – выбрать команду Extract Method и задать новое имя. В среде разработки все вызовы этого метода автоматически заменяются на обращения к новосозданному NewLoadMethod.

В чем смысл действия? Данный пример чрезвычайно упрощен, но легко представить себе ситуацию, когда по проекту разбросан ряд фрагментов, выполняющих более или менее типичные действия. Такие фрагменты, как правило, должны быть довольно крупными, а следовательно, усложняющими восприятие исходного текста (и последующее сопровождение или модификацию программы). Существует полезная рекомендация: извлечение метода целесообразно использовать, когда фрагмент кода требует комментариев для понимания логики его работы. В этом случае метод выделяется, ему дается «говорящее» имя и все однотипные фрагменты заменяются единым вызовом.

Переопределение параметров. В ходе превращения фрагментов кода в отдельные методы, как правило, требуется и изменение параметров. Далее необходимо внести соответствующие правки. Выбором команды Change Parameters в меню Refactriung открываем соответствующий диалог и вводим параметры. Возможные значения вводятся нажатием кнопки Add и выбором параметра из списка возможных вариантов. (Мелкая хитрость – очень удобно использовать для просмотра возможных значений и полей в переменных проекта, если подключаются внешние OLE- компоненты.)

Извлечение в суперкласс. Аналогично можно перенести отдельные члены класса в надкласс, который превратится в родителя класса, подвергающегося рефакторингу. Основная польза от такой переделки заключается в том, что отдельные члены класса можно превратить в абстрактные, перекрыв часть их методов в классах-наследниках. Бывает полезно, если вдруг выяснилось, что отдельные возможности программы необходимо «растиражировать» с некоторыми изменениями.

Действия и изменения, выполняемые в ходе рефакторинга, отражаются в специальном окне (Refactorings).

Принцип, думается, понятен. Среди техник рефакторинга, реализованных в интегрированной среде CodeGear RAD Studio 2007, есть также средства извлечения интерфейсов классов, перемещения классов по иерархии, ввода новых деклараций, изменения переменных и полей, тотального переименования методов, работы с ресурсами и др.

Но и это еще не все. Совершенно очевидно, что в ходе рефакторинга могут возникнуть накладки, как бы ни была «интеллектуальна» IDE. Они устраняются с помощью автоматизированных тестов. Идея проста: формируется контрольный пример, который должен выдавать идентичные результаты как до рефакторинга, так и после (таких примеров может быть много). Результаты их работы (тестовый вывод) можно оценить автоматически, проверив таким образом корректность изменений.

В CodeGear RAD Studio 2007 имеется встроенная система автоматизации тестирования модулей (на базе библиотеки DUnit). В работе она вполне обычна: создаем новый проект типа Test Unit, посредством «мастера» выбираем необходимые модули, в итоге имеем скелет для тестового проекта. Внесем пару проверок... Запускаем – все работает.

CodeGear RAD Studio 2007: интегрированный комплект

Пакет CodeGear RAD Studio 2007 – это многофункциональная система, предназначенная для разработки как традиционных Windows-программ, так и онлайновых служб и комплексов. В единой среде собраны системы, ранее распространявшиеся отдельно, – Delphi для Win32, C++Builder и Delphi.NET 2.0, реализован большой набор дополнительных возможностей, связанных, в частности, с моделированием (на базе UML), средств автоматизации тестирования, рефакторинга и т. д. Кроме того, предусматривается мощная подсистема взаимодействия с разнообразными СУБД, большой набор «визуальных компонентов» (VCL; в том числе для разработки ПО, оформленного в стиле Vista, VCL для. NET и др.), средства быстрого развертывания ПО и т. д.

Пакет отлично подойдет для разработки ПО для персональных компьютеров. С Web-комплексами сложнее: система позволяет легко и быстро создавать мощные решения, однако пакет всецело ориентирован на. NET и другие платформы Microsoft.

Интерфейс пакета хорошо продуман и очень удобен в работе (что, впрочем, неудивительно для программы, за которой стоит опыт двух десятилетий эволюции). Она построена в привычном для разработчиков, использующих решения CodeGear, стиле. Для оценки совместимости новой версии с разработчиками, ориентированными на предыдущие версии (при переходе на новые версии инструментария всегда выползают мелкие неувязки и нестыковки), мы скомпилировали в среде CodeGear RAD Studio 2007 около трех десятков программ как из собственных архивов, так и предоставленных независимыми авторами (на Си++ и разных версиях Delphi, начиная с пятой). Скорость компиляции CodeGear RAD Studio 2007 тоже производит хорошее впечатление. Шероховатостей на удивление мало (во всяком случае, субъективно среда воспринимается как намного более тщательно отшлифованная, чем, например, Borland Developer Studio 2006), а те проблемы, которые все же возникают, в 99 % случаев решаются после вдумчивого чтения информации на сайте разработчика и использования поисковых систем. (Оставшийся 1 % – либо известные «фичи» Delphi, либо проблемы, обусловленные Windows и (или). NET; обычно также решаются полной переустановкой или того, или другого).

Сильная сторона CodeGear RAD Studio 2007 – набор дополнительных инструментов для разработчиков корпоративных систем. В частности, средствами Delphi для. NET и ASP.NET достаточно просто создаются Web-сервисы, предусматриваются интересные возможности работы с параметризованными типами (разработчик может использовать Delphi для построения классов на базе структур данных, используемых в качестве параметров, фактически это generic-классы). В комплекте имеется подсистема Enterprise Core Objects IV (ECO), среда разработки на основе моделей (для. NET), фактически можно смоделировать программу и все ее взаимосвязи в визуальном редакторе (с помощью UML-диаграмм и определений OCL), после чего автоматически будет сгенерирована структура БД и интерфейсные модули. В компонентах VCL для Web-решений была переработана архитектура доступа к данным на основе, но главное – реализована возможность работы в режиме AJAX. (И в отличие от других систем, где отладка сложной системы с широким использованием AJAX напоминает головоломный квест, в среде CodeGear RAD Studio 2007 она выполняется весьма просто и удобно.)

Linux: секреты командной строки

Нейл Рэндалл

Еще лет двадцать-тридцать назад работа на персональном компьютере сводилась

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату
×